Référence à une feuille par codename

Résolu/Fermé
Medestrac - Modifié le 25 févr. 2022 à 10:00
yg_be Messages postés 23470 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 - 25 févr. 2022 à 12:16
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:
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
A voir également:

3 réponses

yg_be Messages postés 23470 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 Ambassadeur 1 568
25 févr. 2022 à 09:56
bonjour,
peut-être
Feuilles = array("Feuil1", "Feuil4", "Feuil8")
For each F in Feuilles
    sheets(F).range("A1") = "blabla"
Next F

ou
dim 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
0
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 soit
Feuil1.range("A1") = "blabla"
soit
Sheets("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.
0
yg_be Messages postés 23470 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 1 568
Modifié le 25 févr. 2022 à 11:04
Ce sont des variables, pas des noms.
Tu l'utilises comme une variable quand tu fais
Feuil1.range("A1") = "blabla"
.
Tu peux créer un tableau avec les valeurs de ces variables:
Feuilles = array(Feuil1, Feuil4, Feuil8)
0
yg_be Messages postés 23470 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 1 568
25 févr. 2022 à 11:00
si tu veux le nom, fais
nom=Feuil1.name
0
nom = "Feuil1"
nom.range("A1")= "blabla"
renvoi une erreur tandis que
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
0
yg_be Messages postés 23470 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 1 568
25 févr. 2022 à 12:16
beaucoup plus simple:
Feuilles = Array(Feuil1 , Feuil4 , Feuil8)
For each F in Feuilles
    F.Range("A1")= "blabla"
Next
0

Discussions similaires