Le 17/12/21 à 16:22, Apitos a écrit :
> Bonjour,
>
> J'aimerais créer une liste de validation de données, qui répertorie tous les noms de feuilles dans le classeur, par formule, à l'exception du nom de la feuille où se trouve la liste de validation.
>
> Merci.
Bonjour,
Pour trouver le nom de la feuille active à partir d'une formule, tu as
ceci. Cela fonctionne seulement si le fichier a été enregistré.
=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;255)
Dans la formule les 2 "A1" sont utilisés pour faire référence à la
feuille active.
Pour obtenir le nom de la "Feuil2" en Feuil1, on pourrait écrire :
=STXT(CELLULE("nomfichier";Feuil2!A1);TROUVE("]";CELLULE("nomfichier";Feuil2!A1))+1;255)
Les 2 "A1" ont été remplacés par une cellule de la feuille : Feuil2!A1
J'avoue que ce n'est pas très génial... ;-))
En vba, c'est très simple, sans un module standard, tu copies cette
fonction. Le résultat de la fonction "SheetName" retourne un tableau (array)
Suppose que tu as 10 feuilles dans ton classeur,
A ) tu sélectionnes 10 cellules de A1 à A10
B ) utilise la touche F2, la cellule A1 va passer en mode édition
C ) Tu valides la formule en utilisant la combinaison des touches
Ctrl + Maj + enter.
D ) Tu vas obtenir la liste des 10 feuilles de ton classeur.
'---------------------------
Function SheetName()
Dim Sh As Worksheet, A As Long, T()
For Each Sh In Worksheets
A = A + 1
ReDim Preserve T(1 To A)
T(A) = Sh.Name
Next
SheetName = Application.Transpose(T)
End Function
'---------------------------
Une variante à la fonction précédente :
On écrit seulement dans une cellule
=sheetname(LIGNE(A1))
Et on peut recopier automatiquement vers le bas et
obtenir la liste de tous les noms des feuilles.
'--------------------------------
Function SheetName(X As Long)
Dim Sh As Worksheet, A As Long, T()
For Each Sh In Worksheets
A = A + 1
ReDim Preserve T(1 To A)
T(A) = Sh.Name
Next
SheetName = Application.Index(T, X)
End Function
'--------------------------------
On pourrait faire une simple petite procédure qui ferait la même chose
au lieu d'utiliser la fonction.
MichD