Je suis en train de tenter de faire une macro pour enregistrer chaques feuilles de mes mises en plan en DXF et PDF. Jusqu'ici, j'arrive bien à enregistrer dans le bon format, toutes les feuilles ou l'active en trifouillant dans les options Solidworks.
Neanmoins, je voudrais pouvoir changer le nom en direct sans renomer chaques fichier (so boring!) Bref. Pour ce faire, je voudrais pouvoir dire à ma macro d'ouvrir une feuille, l'enregistrer puis passer à la suivante. Je sais que je dois y mettre un compteur .... mais comment je fais pour lui dire de prendre la feuille1 puis 2, etc.
Et, petite question bonus. Y a t'il un recapitulatif de toutes les commandes spécifiques à Solidworks quelques part ?
Pour ton "compteur" il faut boucler sur toutes les feuilles, si tu es sûr que c'est toujours feuille1 puis 2 etc, il suffit d'une instruction du style :
[CODE]
i = 1
Do while (sheet_name exist) 'je ne connait pas l'instruction de tête
sheet_name = "Feuille" & i
'Ici ton code pour l'export en PDF et DWG
i = i +1
Loop
[/CODE]
Mais si la personne supprime la feuille 1 ou la renomme, ça ne fonctionne plus !
Donc il faut récupérer le nom ou le numéro de chaque feuille, et l'aide API de SolidWorks propose un exemple !
Merci beaucoup Lucas P pour tes réponses rapide et fournies.
Au moins, maintenant, je suis blindé d'exemple (heureusement que mon anglais n'est pas si loin derrière moi !)
Oui, j'ai vu ta macro similaire. Je m'en suis pas mal inspiré pour la mienne en l'adaptant à mes besoins.
Parcontre, de ce que je comprends dans ce que tu m'envois, je suis obligé de connaitre le nom des feuilles. Si ce n'est pas un probleme pour mes nouvelles, je ne gere pas trop ce qu'ont fait mes prédécesseurs.
Du coup, j'esperais pouvoir trouver quelque chose comme sous excel où tu peux mettre du "Feuil1" pour les désigner plutot que leurs noms.
Je vais trifouiller un peu tout ça et reviendrais poster l'ensemble du code si ça fonctionne
J'ai une macro qui se déroule sans accro ... mais où rien ne se passe. Je ne comprends pas bien pourquoi et où ça coince. Si quelqu'un à une idée ?
Sub Enregistrer() Dim swapp As SldWorks.SldWorks Dim swdoc As SldWorks.ModelDoc2 Dim Swdraw As SldWorks.ModelDoc Dim swSheet As SldWorks.Sheet Dim vSheetNames As Variant Dim Nbfeuille As Variant Set swapp = Application.SldWorks Set swdoc = swapp.ActiveDoc Set Swdraw = swdoc Set swSheet = Swdraw.GetCurrentSheet 'Message de confirmation ret = MsgBox("voulez-vous convertir cette mise en plan en DXF et PDF ?", vbOKCancel + vbExclamation + vbMsgBoxSetForeground + vbSystemModal, "Conversion Laser") If ret = vbCancel Then End 'Enregistrement nouveau nom Do newname = InputBox("Merci d'indiquer le nouveau nom:", "blabla", newname) If StrPtr(newname) = 0 Then MsgBox "procédure annulée" Exit Sub End If 'Verification caractere interdit Windows Do While InStr(newname, "/") > 0 Or InStr(newname, "*") > 0 Or InStr(newname, "?") > 0 Or InStr(newname, "<") > 0 Or InStr(newnam, ">") > 0 Or InStr(newnam, "!") > 0 newname = InputBox("Attention, le nom contient au moins un des caractère interdits \/:*?""<>!" & vbNewLine & vbNewLine & "Merci d'indiquer le nouveau nom: ", "enregistrer-sous par LPR", newname) Loop Loop While newname = " " 'Dossier d'enregistrement Do FilePath = InputBox("Indiquez le chemin d'accés", "dossier enregistrement", FilePath) If StrPtr(FilePath) = 0 Then MsgBox "procédure annulée" Exit Sub End If 'Ajout du \ à la fin du nom de dossier If Right(FilePath, 1) <> "\" Then FilePath = FilePath & "\" If Dir$(FilePath) <> "" Then EXISTE = 1 Else: MsgBox "le répertoire n'existe pas, merci de le créer" Debug.Print Dir$(FilePath) End If Loop While EXISTE <> 1 'Indique le nombre de feuille Nbfeuille = swdoc.GetSheetCount For i = 0 To Nbfeuille swdoc.SheetPrevious Next i 'passage à la feuille suivante si < au nombre total For i = 0 To varSheetCount - 1 If i <> 0 Then swmodel.SheetNext End If 'Enregistrement en DXF et PDF swdoc.SaveAs (FilePath + newname + "_" + i + ".dxf") swdoc.SaveAs (FilePath + newname + "_" + i + ".pdf") Next i End Sub