Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boucle sur codename de feuille

8 réponses
Avatar
ThierryP
Bonjour le forum,

Dans un classeur mod=C3=A8le, j'ai une structure de base des onglets qui se=
rt =C3=A0 tous les classeurs cr=C3=A9=C3=A9s suivant ce mod=C3=A8le :
Les feuilles dont le codename est Feuil1 =C3=A0 Feuil3 existent toujours.
Ensuite, il pourra y avoir autant d'onglets suppl=C3=A9mentaires que n=C3=
=A9cessaire : Feuil4 =C3=A0 Feuiln.
Je voudrais boucler sur les codename :
For i=3D4 to ThisWorkbook.Sheets.Count
.....
.....
Next
Quelle est la syntaxe pour s=C3=A9lectionner la feuille dont le codename es=
t "Feuil" & i ???

Merci d'avance pour vos lumi=C3=A8res,

ThierryP

8 réponses

Avatar
ThierryP
Ou encore changer l'index des onglets :ils n'ont pas été cré és dans l'ordre de leur utilisation, ce qui fait que mon onglet "Feuil 1" n'a pas l'index 1....
ThierryP
Avatar
Péhemme
Bonjour Thierry,
Lors de la création d'un 'nouveau fichier' je modifie le codename de la
dernière feuille qui est devenue la première feuille de travail.
Ouais, pas sûr d'être clair, mais cela n'intéresse que moi.
À cette occasion voici ce que j'ai écrit :
'II - Modifie le CodeName de la dernière feuille du nouveau fichier
Set Sh = Worksheets(Sheets(Sheets.Count).Name)
If Mid(Sheets(Sheets.Count).CodeName, 6) > 2 Then
Réponse = MsgBox("La dernière page :" & vbNewLine & _
" . nom de l'onglet : " & Sheets(Sheets.Count).Name &
vbNewLine & _
" . CodeName : " & Sheets(Sheets.Count).CodeName &
vbNewLine & _
"Le CodeName sera modifié en : " & "Feuil" &
Sheets(Sheets.Count).index, _
vbInformation + vbYesNo, _
"Modification du CodeName de la Dernière Feuille")
If Réponse = vbNo Then Exit Sub
ThisWorkbook.VBProject.VBComponents(Sh.CodeName).Name = "Feuil"
& Sh.index
Else
MsgBox "Le Codename de la dernière Feuille est : " &
Sheets(Sheets.Count).CodeName
End If
Set Sh = Nothing
Cela ne répond pas directement à ta question, mais tu y trouveras des
éléments de syntaxe qui te permettront de travailler ton sujet.
Bien amicalement
Michel
"ThierryP" a écrit dans le message de groupe de discussion :
Ou encore changer l'index des onglets :ils n'ont pas été créés dans l'ordre
de leur utilisation, ce qui fait que mon onglet "Feuil1" n'a pas l'index
1....
ThierryP
Avatar
ThierryP
Bonjour Michel,
Merci de ce retour aussi rapide !!
Effectivement, cela va me permettre de creuser un peu, il y a dans ton cod edes syntaxes qui m'étaient inconnues (ce n'est pas dur non plus, je n e suis pas un gourou !!!)
... Et ça fait plaisir de voir que les "vieux de la vieille" fréq uentent toujours ce bon vieux MPFE !!
Cordialement,
Thierry
Avatar
MichD
Bonjour,
Si tu veux boucler seulement sur certains "CodeName" de certaines feuilles:
La procédure affectera seulement les feuilles dont le codename est :
"Feuil1", "Feuil2", "Feuil3"
Tu peux désigner autant de feuilles que tu désires.
'--------------------------------------------
Sub test()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
Select Case Sh.CodeName
'Attention : CodeName et ta liste est
'sensible à la casse.
Case Is = "Feuil1", "Feuil2", "Feuil3"
'la procédure que tu veux appliquer...
End Select
Next
End Sub
'--------------------------------------------
MichD
Avatar
MichD
Si tu préfères, tu peux boucler sur les indices des codename des objets "Feuille" visibles à
VBA
Exemple, pour boucler sur les feuilles de 1 à 3 : Case 1 to 3
pour boucler sur les feuilles 1 et 3 : : Case 1, 3
'----------------------------------------
Sub test1()
Dim A As Long
For Each sh In ThisWorkbook.Worksheets
Select Case Right(sh.CodeName, Len(sh.CodeName) - Len("Feuil"))
Case 2
MsgBox sh.CodeName
End Select
Next
End Sub
'----------------------------------------
MichD
Avatar
ThierryP
Bonjour Denis,
Toujours fidèle au poste !!
Merci pour le retour !
J'en profite pour relancer ma seconde question : peut-on changer l'index de s onglets ? En fait, mon onglet Feuil1 n'a pas l'index 1, Feuil2 n'est pas à 2,etc... Si je pouvais remettre les index dans l'ordre, je pourrais boucler For... Next, vu que j'applique le même traitement sur un certa in nombre de feuilles.
Merci d'avance,
ThierryP
Avatar
MichD
Bonjour,
A ) Tu peux le faire manuellement en modifiant directement la propriété "Name" de l'objet
"Feuilx" dans la fenêtre de VBA.
- sélection de l'objet "Feuil" désiré - et tu lui donnes à la propriété "Name" la valeur
que tu veux. Évidemment, elle doit être unique.
B ) En macros, si tu veux modifier les index de plusieurs feuilles avec des index qui se
suivent, l'opération se fait en 2 temps.
Tu renommes les feuilles à partir d'un index (10, 100...qui est la valeur initiale de A)
que tu détermines et qui ne provoquera pas l'insertion d'un codename déjà existant.
Tu refais la même boucle en modifiant la valeur initiale de la variable A pour la valeur
désirée.
'-------------------------------------------
Sub test()
Dim A As Long
Dim Sh As Worksheet
a = 10
For Each Sh In Worksheets
With Sh
a = a + 1
.Parent.VBProject.VBComponents(.CodeName) _
.Properties("_CodeName") = "Feuil" & a
End With
Next
End Sub
'-------------------------------------------
MichD
"ThierryP" a écrit dans le message de groupe de discussion :
Bonjour Denis,
Toujours fidèle au poste !!
Merci pour le retour !
J'en profite pour relancer ma seconde question : peut-on changer l'index des onglets ? En fait,
mon onglet Feuil1 n'a pas l'index 1, Feuil2 n'est pas à 2,etc... Si je pouvais remettre les
index dans l'ordre, je pourrais boucler For... Next, vu que j'applique le même traitement sur
un certain nombre de feuilles.
Merci d'avance,
ThierryP
Avatar
Péhemme
Ben Thierry ?...
Tu n'as pas utilisé les informations que je t'ai communiquées ?
:-)
Est-ce que un "truc" comme cela répond à ta question ?
Sub Test_CodeName()
Dim i As Integer
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
'MsgBox ThisWorkbook.VBProject.VBComponents(Sh.CodeName).Name
' MsgBox Sh.Index
ThisWorkbook.VBProject.VBComponents(Sh.CodeName).Name = _
"Blabla_Sheet" & Sh.Index
Next
End Sub
Bonne journée
Michel
"ThierryP" a écrit dans le message de groupe de discussion :
Bonjour Denis,
Toujours fidèle au poste !!
Merci pour le retour !
J'en profite pour relancer ma seconde question : peut-on changer l'index des
onglets ? En fait, mon onglet Feuil1 n'a pas l'index 1, Feuil2 n'est pas à
2,etc... Si je pouvais remettre les index dans l'ordre, je pourrais boucler
For... Next, vu que j'applique le même traitement sur un certain nombre de
feuilles.
Merci d'avance,
ThierryP