Salut, j'ai une macro qui enregistre des feuilles de mon classeur sous des noms de variables pour ne pas avoir de probleme lors de l'execution de mon code.
Par exemple ma feuille va avoir comme nom "BDD" et lorsque je vais coder je vais y faire reference comme ceci : Sheets("'BDD").xxxxxx ou sheets(1).xxxxxxx sauf que si un utilisateur du fichier change le nom de cette feuille les references precedentes ne fonctionneront plus
C'est pour ça qu'a l'execution de mon fichier je nomme les feuilles telles qu'il suit: je nomme le workbook en WB00 et chaque feuille en fonction de son code name (qui lui est non modifiable). Ce qui veut dire que je vais créer une variable WB00WS1 pour ma premiere feuille, WB00WS02 pour la 2eme et ainsi de suite
Je vais ensuite y faire reference dans mon code tel qu'il suit WB00WS01.xxxx
Du coup ma macro se présente tel qu'il suit:
Sub initWB00()
Set WB00 = ActiveWorkbook
For Each W In WB00.Worksheets
On Error Resume Next
If W.CodeName = "Feuil1" Then
Set WB00WS01 = W
End If
If W.CodeName = "Feuil2" Then
Set WB00WS02 = W
End If
If W.CodeName = "Feuil3" Then
Set WB00WS03 = W
End If
If W.CodeName = "Feuil4" Then
Set WB00WS04 = W
End If
If W.CodeName = "Feuil5" Then
Set WB00WS05 = W
End If
If W.CodeName = "Feuil6" Then
Set WB00WS06 = W
End If
If W.CodeName = "Feuil7" Then
Set WB00WS07 = W
End If
If W.CodeName = "Feuil8" Then
Set WB00WS08 = W
End If
If W.CodeName = "Feuil9" Then
Set WB00WS09 = W
End If
If W.CodeName = "Feuil10" Then
Set WB00WS10 = W
End If
Next W
End Sub
De cette maniere ça fonctionne mais vous pouvez le voir par vous meme, c'est assez tribial et peu esthetique
J'ai donc voulu faire une boucle basique avec i en variable qui va donner le n° de la feuille donc "WB00WS" i = "Feuil"i =
Sub initWB00()
Dim i As Integer
Set WB00 = ActiveWorkbook
For Each W In WB00.Worksheets
For i = 1 To 20
If W.CodeName = "Feuil" & i Then
Set "WB00WS"&i = W
End If
Next W
End Sub
Le probleme etant que si je l'ecrit de cette maniere j'ai une erreur "Attendu: identificateur"
Je présume que c'est le fait de mettre un string et une variable à gauche d'une egalité mais si c'est ça je vois pas comment resoudre le probleme
Avez vous des idées ?
Merci d'avance