Référence à une feuille par codename
Résolu
Medestrac
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un classeur contenant 3 feuilles "Entrée2021", "Sortie2021", "Bilan2021" et d'autres feuilles.
Ce classeur est réutilisé chaque année en renommant les feuilles 2021 en 2022.
J'ai un code à répéter sur ces 3 feuilles. Je ne peux pas utiliser leur nom car il change chaque année. J'aurais donc voulu utiliser leur "codename". Quelque chose du genre:
Ce qui ne marche évidemment pas... une idée?
J'ai un classeur contenant 3 feuilles "Entrée2021", "Sortie2021", "Bilan2021" et d'autres feuilles.
Ce classeur est réutilisé chaque année en renommant les feuilles 2021 en 2022.
J'ai un code à répéter sur ces 3 feuilles. Je ne peux pas utiliser leur nom car il change chaque année. J'aurais donc voulu utiliser leur "codename". Quelque chose du genre:
Feuilles = array("Feuil1", "Feuil4", "Feuil8")
For each F in Feuilles
F.range("A1") = "blabla"
Next F
Ce qui ne marche évidemment pas... une idée?
Configuration: Windows / Firefox 97.0
3 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
peut-êtreFeuilles = array("Feuil1", "Feuil4", "Feuil8") For each F in Feuilles sheets(F).range("A1") = "blabla" Next F
oudim F as worksheet, nom as string Feuilles = array("Feuil1", "Feuil4", "Feuil8") For each nom in Feuilles set F = sheets(nom) F.range("A1") = "blabla" Next F -
Bonjour,
Le problème est que le "nom" de la feuille est différent. Dans l'éditeur VBA -> Propriétés d'une feuille il y a une ligne "(Name)" qui chez moi est "Feuil1" et une ligne "Name" qui chez moi est "Entrée 2021".
Pour écrire sur cette feuille je peux faire soitFeuil1.range("A1") = "blabla"soitSheets("Entrée 2021").range("A1") = blabla
Mais le code suivant ne marche pas:nom = "Feuil1"
sheets(nom).range("A1") = "blabla"
car nom ne correspond pas à la propriété name de la feuille mais à la propriété (name)...ce qui n'est pas pareil. -
nom = "Feuil1"
renvoi une erreur tandis que
nom.range("A1")= "blabla"Feuil1.range("A1") = "blabla"fonctionne correctement
La solution dans mon cas est effectivement d'utiliser la propriété name de la manière suivante:Feuilles = Array(Feuil1.name, Feuil4.name, Feuil8.name)
For each F in Feuilles
worksheets(F).Range("A1")= "blabla"
Next
Merci du coup de main