Changer config dans les plans (vba)

Bonjour,

Je suis à la recherche d'une âme charitable pour m'aider à faire un programme pour changer les configurations dans la mise en plan. Je m'explique.

J'ai une pièce avec plusieurs config, je dois faire un plan pour chaque config (donc une feuille différente pour chaque config). J'ai déja une macro pour copier/coller les feuilles, et une macro pour renommer les feuilles (le même nom que le nom des config). Maintenant je cherche un code pour parcourir chaque feuilles et changer la config de référence de la mise en plan suivant le nom de ma feuille ou directement suivant le nom de ma config.

J'ai trouvé une macro sur code stack mais elle fait tout (copie/colle renomme et change config), j'ai essayer de la modifier pour qu'elle change juste la config. Alors ça marche mais que sur la dernière feuille. Je n'arrive pas à bouclé sur les feuilles. De plus je veux que les 3 étapes soit indépendantes d'où mon problème.

Quelqu'un aurait un idée ?

Macro Codestack : 

La macro propage les configurations du document référencé aux feuilles des dessins SOLIDWORKS (codestack.net)

Le bout du code modifier :

Sub CopySheet(draw As SldWorks.DrawingDoc, sheet As SldWorks.sheet, SheetName As String)

Dim swNewSheet As SldWorks.sheet
            Set swNewSheet = draw.sheet(draw.GetSheetNames()(draw.GetSheetCount() - 1))
            
            Dim vViews As Variant
            vViews = swNewSheet.GetViews
            
            Set swDraw = swApp.ActiveDoc
            Dim vSheetNames As Variant
            vSheetNames = swDraw.GetSheetNames
            
            Dim i As Integer
            Dim j As Integer
            
            For j = 0 To UBound(vSheetNames)
            
            For i = 0 To UBound(vViews)
                
                Dim swView As SldWorks.View
                Set swView = vViews(i)
                
                swView.ReferencedConfiguration = SheetName
                
            Next i
            Next j

End Sub

Bonjour,

Pour info c'est une fonctionnalité qui existe dans l'outil SmartDrawings de myCADtools :

https://help.visiativ.com/mycadtools/2022/fr/SmartDrawings4.html

Vous pouvez tester l'outil pendant 30 jours : 

https://www.lynkoa.com/mycadtools

Bonne journée

Philippe

1 « J'aime »

Merci pour la réponse mais je voudrais pouvoir faire sans

J'ai continué de travailler sur le code, mais je comprend pas tout là. En effet, mon code passe bien sur chaque page, repère bien les vues mais change la config que de la dernière feuille. C'est ce point que je ne comprend pas. Pourquoi la config de la dernière page change mais pas les autres ?

Je met mon code en PJ, si quelqu'un a une idée ça serait top top top.

Merci

Edit : Après un peu de bricolage je me suis aperçu que la config change certes sur la dernière page (avec la bonne config) mais si j'édite mon code pour que la config change sur une autre page ça change toujours pour la même config (la dernière) et non la config correspondant au nom de la page


macro28.swp

Bonjour;

Votre Valeur "SheetName" n'est pas "variable"...
Juste au-dessus de la ligne swView.ReferencedConfiguration = SheetName
Ajoutez Set SheetName = SheetNames(j)

Note : n'hésitez pas à utiliser le mode "pas à pas" (F8) de l'éditeur VB (avec la fenêtre de visualisation des Variables locale active).
            Cela facilite grandement la comprehension du code et la recherche d'erreurs....


Cordialement

1 « J'aime »

Salut,

Malheureusement la correction ne fonctionne pas.

Cordialement

Salut,

Malheureusement la correction ne fonctionne pas.

Cordialement