Miniatures associées à une Liste de Pièces Inventor (Nomenclature)
Résolu le 18 juillet 2017 avec la version Inventor 2018.1 (voir en bas de l'article)
Sur le site MODE THE MACHINE Miniatures associées à une Liste de Pièces Inventor (Nomenclature)

Un source VBA toujours d'actualité qui permet de créer un fichier Word avec les Miniatures associées à votre Liste de Pièces (Nomenclature) depuis une mise en plan IDW ou DWG Inventor.
NB: La couleur de fond de la miniature est en fonction de votre paramètre Arrière-plan d'Inventor.
dans l'image ci-dessous un fond blanc a été créé avec Paint et sauvé dans le dossier C:\Users\Public\Documents\Autodesk\Inventor 2017\Backgrounds.

Dans l'éditeur, choisissez :
Projet de l'Application (Default.ivb) Module1
Cela modifiera le fichier Default.ivb qui se trouve dans le dossier C:\Users\Public\Documents\Autodesk\Inventor 2017, si vos Options d'application Inventor sont configurées avec ce chemin.
Sélectionner le code VBA ci-dessous enfin de le copier dans la fenêtre du Module1 (Ctrl+C puis Ctrl+V)
Public Sub MiniaturesDansNomenclature()
' Vérifiez que vous êtes en mise en plan.
On Error Resume Next
Dim drawDoc As DrawingDocument
Set drawDoc = ThisApplication.ActiveDocument
If Err Then
MsgBox "Un dessin doit être actif."
Exit Sub
End If
' Vérifiez que vous avez sélectionné une Liste de pièces.
Dim partList As PartsList
Set partList = drawDoc.SelectSet.Item(1)
If Err Then
MsgBox "Sélectionnez une liste de pièces."
Exit Sub
End If
On Error GoTo 0
Dim wordApp As Word.Application
On Error Resume Next
' Connexion à l'instance Word.
Set wordApp = GetObject(, "Word.Application")
If Err Then
Err.Clear
' Start Word.
Set wordApp = CreateObject("Word.Application")
If Err Then
MsgBox "Impossible de lancer Word."
Exit Sub
End If
End If
On Error GoTo 0
On Error GoTo ErrorFound
wordApp.Visible = False
' Création d'un nouveau document Word.
Dim wordDoc As Word.Document
Set wordDoc = wordApp.Application.Documents.Add
' Création d'un tableau identique à la liste de pièces sélectionnée).
Dim partListTable As Table
Set partListTable = wordDoc.Tables.Add(wordApp.Selection.Range, partList.PartsListRows.Count + 1, partList.PartsListColumns.Count + 1, wdWord9TableBehavior, wdAutoFitFixed)
' Copie des entêtes de la liste de pièces.
Dim i As Integer
For i = 0 To partList.PartsListColumns.Count
Dim myrange As Range
Set myrange = partListTable.Cell(1, i + 1).Range
myrange.End = partListTable.Cell(1, i + 1).Range.End
myrange.Select
If i = 0 Then
Call wordApp.Selection.TypeText("Aperçu")
Else
Call wordApp.Selection.TypeText(partList.PartsListColumns.Item(i).Title)
End If
Next
' Itération des rangées de la liste de pièces.
Dim rowIndex As Integer
rowIndex = 1
Dim partListRow As PartsListRow
For Each partListRow In partList.PartsListRows
ThisApplication.StatusBarText = "Processing part list row " & rowIndex & " of " & partList.PartsListRows.Count & "..."
rowIndex = rowIndex + 1
If partListRow.Visible Then
' Choix de la première cellule de la rangée.
Set myrange = partListTable.Cell(rowIndex, 1).Range
myrange.End = partListTable.Cell(rowIndex, 1).Range.End
myrange.Select
' Obtention de l'aperçu du document associée à la rangée.
Dim drawBomRow As DrawingBOMRow
Set drawBomRow = partListRow.ReferencedRows.Item(1)
Dim refDoc As Document
Set refDoc = drawBomRow.BOMRow.ComponentDefinitions.Item(1).Document
On Error Resume Next
Dim thumbNail As IPictureDisp
Set thumbNail = refDoc.thumbNail
If Err.Number = 0 Then
' Sauvegarde de l'aperçu dans un fichier.
Call SavePicture(thumbNail, "C:\Temp\TempThumb.bmp")
Dim shape As Word.InlineShape
Set shape = wordApp.Selection.InlineShapes.AddPicture("C:\Temp\TempThumb.bmp", False, True)
shape.LockAspectRatio = True
shape.Height = 50
Else
Call wordApp.Selection.TypeText("Aperçu non valable")
End If
On Error GoTo ErrorFound
' Copy the rest of the part list info into the table for this row.
For i = 1 To partList.PartsListColumns.Count
Set myrange = partListTable.Cell(rowIndex, i + 1).Range
myrange.End = partListTable.Cell(rowIndex, i + 1).Range.End
myrange.Select
Call wordApp.Selection.TypeText(partListRow.Item(i).Value)
Next
End If
Next
ThisApplication.StatusBarText = "Fin"
wordApp.Visible = True
Exit Sub
ErrorFound:
MsgBox "Erreur inconnue."
wordApp.Visible = True
End Sub
Après avoir coller le code VBA dans le Module 1.
Ajouter la Référence Microsoft Word Object Library

Sélection de la Liste de pièces puis lancer la Macro MiniaturesDansNomenclature soit avec le raccourci clavier Alt+F8 ou par le ruban Outils---> Macros
Vous obtiendrez un fichier Word avec vos colonnes de votre liste de pièces complété de l'Aperçu en première colonne.
Si votre liste de pièces est volumineuse, vous pouvez anticiper en modifiant à la fois la macro VBA à la ligne Shape Height = 50
cette valeur défini la taille de la miniature donc aussi la hauteur de rangée dans le fichier Word. (25 = petite vignette, 50 = moyenne vignette, 100 = grande vignette)
Modifier la chaîne de caractère dans le code VBA de la colonne qui contient l'Aperçu avec le mot qui vous convient le mieux, (Vignette, Miniature ....)
et aussi adapter les valeurs de marges et nombre de colonnes de Word avec un document vierge avant d'utiliser la Macro Inventor :
Améliorations apportées aux miniatures de la nomenclature avec Inventor 2018.1
Les vues miniatures sont désormais exportées en même temps que les autres informations dans la boîte de dialogue Nomenclature.
La colonne Miniature doit être incluse en tant que telle dans la boîte de dialogue Nomenclature pour que les miniatures puissent être exportées vers le fichier externe.
| Inventor 2018.1 | Excel |
![]() |
![]() |
















Merci Philippe, c’est un super article, très complet et très utile.
Merci,
You’re Welcome !!!