Utiliser le N° de feuille dans un code plutôt que le nom

Bonsoir,

Je souhaite utiliser le N° de la feuille dans un code VBA plutôt que le nom de la feuille afin d'éviter que le code ne fonctionne plus si quelqu'un modifie le nom de la feuille.

J'ai trouvé quand il s'agit de sélectionner une seule feuille :

Sheets("NOM DE FEUILLE").Select

devient (pour la feuille N° 20 par exemple) :

Feuil20.Select

Par contre, je ne trouve pas le code quand il s'agit de sélectionner plusieurs feuilles. Le code avec le nom des feuilles est :

Sheets(Array("NOM DE FEUILLE 14", "NOM DE FEUILLE 20")).Select

Par quoi dois-je le remplacer si je souhaite utiliser les N° de feuilles (feuille N° 14 et feuille N° 28 par exemple) ?

En vous remerciant par avance pour votre aide

Bonsoir,

Pour utiliser le N° de la feuille, c'est comme ceci:

Feuil20 = Worksheets("NOM DE FEUILLE 20").CodeName

Mais, pour ce que vous demandez, vous pourriez procéder comme suit:

Dim f14 As Worksheet, f20 As Worksheet
Set f14 = Sheets("NOM DE FEUILLE 14")
Set f20 = Sheets("NOM DE FEUILLE 20")
Sheets(Array(f14.Name, f20.Name)).Select

Cdlt

Bonsoir @ tous !

Une autre proposition :
un code qui scanne les feuilles et qui sélectionne celle qui correspondent à "14" et "28" :

Dim Feuille As Worksheet
For Each Feuille In ActiveWorkbook.Sheets
    If Right(Feuille.Name,2)="14" Or Right(Feuille.Name,2)="28" Then Feuille.Select Replace:=False
Next Feuille

@ bientôt

LouReeD

Bonjour à tous,

Les deux propositions précédentes répondent parfaitement à la demande.

J'ajouterai que c'est une très bonne idée de se référer au nom de code des feuilles plutôt que le nom visible pour plusieurs raisons :

  1. Pas besoin d'écrire "ThisWorkbook.Worksheets("maFeuilleX")…", on peut écrire maFeuilleX… => C'est beaucoup plus court et clair.
  2. Pas d'erreur de saisie du nom si on utilise cette méthode avec l'auto-compétition.
  3. Code robuste.

C'est pourquoi je vous conseillerai, à ce moment-là, de renommer toutes vos feuilles dans le VBE (le nom de code, pas le nom visible) et de ne travailler qu'avec ces derniers. Ensuite, il vous suffira d'utiliser une des deux méthodes pour arriver à votre objectif.

Merci à tous pour vos propositions qui m'ont aidé à trouver la solution.

J'ai donc remplacer dans mon code la ligne :

Sheets(Array("NOM DE FEUILLE 14", "NOM DE FEUILLE 20")).Select

Par :

Sheets(Array(Feuil14.Name, Feuil20.Name)).Select

Et ça fonctionne parfaitement.

Bonne journée !

Rechercher des sujets similaires à "utiliser feuille code plutot que nom"