Traitement dans plusieurs instances en simultané
Bonjour
J'ai une macro qui ouvre plusieurs classeurs dans autant d'instances. Par contre, je ne sais pas lancer automatiquement la macro qu'ils contiennent. Si je la lance avec le Workbook_Open, les classeurs s'exécutent en séquence. Je mets ci-dessous mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Sub test()
Dim EXLAPP(25) As Object, Chemin As String, Alpha As String, Lettre As String
If Left(Application.UserName, 6) = "Daniel" Then
Chemin = "d:\Users\dcola\Documents\Donnees\Daniel\mpfe\Jean-Claude Cholet\"
Else
Chemin = "c:\Mes matchs\"
End If
Alpha = "abcdefghijklmnopqrstuvwxyz"
For i = 0 To 25
Lettre = UCase(Mid(Alpha, i + 1, 1))
Set EXLAPP(i) = CreateObject("Excel.Application")
EXLAPP(i).Visible = True
EXLAPP(i).Workbooks.Open Chemin & "Liste des doublons_" & Lettre & ".xlsm"
Next i
End Sub |
Par avance, merci pour vos suggestions.
re probleme d'espace réglé
ajouter un guillemet au debut et a la fin pour que le nom soit pris comme un arugment
dans mon exemple de l'archive j'ai ajouté " excel " dans les noms
Code:
nom = Chr(34) & ThisWorkbook.Path & "\" & "fichier excel " & Mid(sufixe, i, 1) & ".xlsm" & Chr(34)
c'est normal les argument injectés dans l'apel etant séparé par un espace wscript ne sais pas ou s'arrete le nom si il y a des espaces donc on englobe le tout par des guilletmets supplementaires
plus de soucis
;)
pour info et une meileure compréhention
exemple d'apel avec plusieurs arguments
Code:
.Run Scripts & nom " " & "toto" & " " & variable & " " & "titi" & " " & variable2
tout ce qui est ecrit en dur entre guillemet(toto et titi) ,les variables non mais tous séparé par (& " " & )
l'ouverture des instances et des fichiers via vbs t'offre une rapidité pas négligable
en effet tu pourra constater dans mes exemple que c'est a partir du 3 a peu pres que les instances se ferment on se raproche plus du coté "simultané"
un autre avantage aussi c'est que le createobject excel.application est créé en dehors du maitre
en effet quand tu créé un object excel tu charge la memoire d'une instance suplementaire mais aussi la memoire alouée a l'instance du fichier maitre si c'est fait pa VBA et non VBS dans le fichier maitre
on peut parler de multitread en tout cas plus proche ,ce que VBA ne peut pas faire
j'ai tout dis ;)