En relisant les deux bouts de codes que j'ai posté dans la question précédente, c'est plus facile que je ne pensais, mais je n’ai pas eu le temps de tester.
A mettre dans une nouvelle macro dans SolidWorks depuis le menu « Outils > Macro > Nouvelle ».
'Edit : nettoyage du code et ajout de commentaires
Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim vConfNameArr As Variant Dim sConfigName As String Dim i As Long
Set swApp = CreateObject("SldWorks.Application") 'active SolidWorks dans VBA Set swModel = swApp.ActiveDoc 'récupère le document actif vConfNameArr = swModel.GetConfigurationNames 'récupère toutes les configurations dans un tableau For i = 0 To UBound(vConfNameArr) 'boucle sur toutes les configurations sConfigName = vConfNameArr(i) sConfigName.ChildComponentDisplayInBOM = swChildComponentInBOMOption_e.swChildComponent_Promote 'Active la fonction promouvoir sur chacune des configurations Next i End Sub
J'ai un collègue qui connait les macros, voici cequ'il a écrit.
Après un test ou deux, ça a l'air de marcher.
Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swConfig As SldWorks.Configuration Dim vConfNameArr As Variant Dim sConfigName As String Dim i As Long
Set swApp = Application.SldWorks 'active SolidWorks dans VBA Set swModel = swApp.ActiveDoc 'récupère le document actif vConfNameArr = swModel.GetConfigurationNames 'récupère toutes les configurations dans un tableau For i = 0 To UBound(vConfNameArr) 'boucle sur toutes les configurations Set swConfig = swModel.GetConfigurationByName(vConfNameArr(i)) 'sConfigName = vConfNameArr(i) swConfig.ChildComponentDisplayInBOM = swChildComponentInBOMOption_e.swChildComponent_Promote 'Active la fonction promouvoir sur chacune des configurations