Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAnn As SldWorks.Annotation
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice A.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice A"
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice B.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice B"
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice C.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice C"
swModel.WindowRedraw
End Sub
ou:
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAnn As SldWorks.Annotation
Dim NoteNames As Variant
Dim NoteFolder As String
Dim i As Integer
NoteNames = Array("Indice A", "Indice B", "Indice C")
NoteFolder = "C:\monDossierDeNotes\"
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
For i = 0 To 2
Set swAnn = swModel.Extension.InsertAnnotationFavorite(NoteFolder & NoteNames(i) & ".sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = NoteNames(i)
Next
swModel.WindowRedraw
End Sub
swModel n'est pas déclaré en tant que variable globale. donc malgré être assigné dans Layer(), il est nul dans ChgtComboBox1() il faut rajouter: Dim swModel as sldworks.modeldoc2 avant main()
En fait il y a plein de variables non déclarées. Ma suggestion, rajoute : Option Explicit au tout début de la macro et corrige toutes les erreurs de déclaration.
Aussi déclare Layer() avec: Sub Layer(void) et appelle le avec: Call Layer(Empty) ou: Layer Empty Pareil pour ChgtComboBox1() Ca forcera la macro à ce lancer depuis main()
Il est important qu'une macro n'est qu'une seule fonction principale (généralement main() ).
Une fonction est secondaire si elle a un paramètre comme (ByVal swModel As ModelDoc2). Si une fonction est secondaire mais n'a pas besoin de paramètre, la convention est de lui assigner un paramètre vide. (Void)