J'aimerais créer une liste de validation de données, qui répertorie tous les noms de feuilles dans le classeur, à l'exception de la feuille où se trouve la liste de validation.
J'aimerais créer une liste de validation de données, qui répertorie tous les noms de feuilles dans le classeur, à l'exception de la feuille où se trouve la liste de validation.
Bonjour,
Un clic droit sur les flèches en bas à gauche des noms d'onglet donne cette liste.
Sinon:
Inscrire le nom des feuilles concernées dans une colonne (qui peut-être masquée)
Dans le menu "Données" ==>"Validation des données" sélectionner "Liste" et dans "Source" =La plage de la colonne avec les noms
En VBA il suffit de placer cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim s As Object, n
If Sheets.Count > 1 Then ReDim a(1 To Sheets.Count - 1, 1 To 1)
For Each s In Sheets
If s.Name <> Sh.Name Then n = n + 1: a(n, 1) = s.Name
Next
'---restitution---'
With Sh.[A1] '1ère cellule de destination, à adapter
If n Then .Resize(n) = a
.Offset(n).Resize(Sh.Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
La macro se déclenche quand on active une feuille.
Si vous n'en voulez pas faites le travail manuellement comme indiqué par Jacky67.
RE..
De Boisgontier Jacques
Pour obtenir les noms des feuilles d'un classeur:
-Créer un nom de champ NomsFeuilles =LIRE.CLASSEUR(1)
-Sélectionner des cellules horizontales =SI(MAINTENANT()>0;STXT(NomsFeuilles;TROUVE("]";NomsFeuilles)+1;99))
En VBA il suffit de placer cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim s As Object, n
If Sheets.Count > 1 Then ReDim a(1 To Sheets.Count - 1, 1 To 1)
For Each s In Sheets
If s.Name <> Sh.Name Then n = n + 1: a(n, 1) = s.Name
Next
'---restitution---'
With Sh.[A1] '1ère cellule de destination, à adapter
If n Then .Resize(n) = a
.Offset(n).Resize(Sh.Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
La macro se déclenche quand on active une feuille.
Si vous n'en voulez pas faites le travail manuellement comme indiqué par Jacky67.
RE...
Allergique au vba ???
Comme précisé par job75
LIRE.CLASSEUR est une fonction macro Excel 4.0 (Même si celle-ci n'apparait pas dans l'éditeur VB)
Le classeur doit être enregistré en .XLSM
Pour le reste, je ne vois pas d'autre solution que de masquer par la mise en forme conditionnelle