Excel : validation données liste
Sandrine
-
Sandrine -
Sandrine -
Bonjour,
J'ai définis des plages avec des noms étendue à seulement une feuille car je peux avoir plusieurs listes du même nom. J'ai définis ces listes dans Insertion/Nom/Définir et j'ai les noms suivants : feuille1!bois; feuille2!bois; feuille1!bardage,...
J'aimerais maintenant faire des listes faisant référence à ces plages, seulement quand je fais données / Validation / liste il me dit qu'il ne faut pas faire référence à d'autres feuilles dans validation des données.
Quels sont mes alternatives pour contrer ce problème ? Comment puis-je quand même faire des listes ?
C'est en plus pour faire des listes en cascades.
Merci d'avance
J'ai définis des plages avec des noms étendue à seulement une feuille car je peux avoir plusieurs listes du même nom. J'ai définis ces listes dans Insertion/Nom/Définir et j'ai les noms suivants : feuille1!bois; feuille2!bois; feuille1!bardage,...
J'aimerais maintenant faire des listes faisant référence à ces plages, seulement quand je fais données / Validation / liste il me dit qu'il ne faut pas faire référence à d'autres feuilles dans validation des données.
Quels sont mes alternatives pour contrer ce problème ? Comment puis-je quand même faire des listes ?
C'est en plus pour faire des listes en cascades.
Merci d'avance
A voir également:
- Excel : validation données liste
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
De plus j'utilise une macro pour mettre en place mes listes, qui me le fait automatiquement depuis mes tableaux de données, donc je suis un peu limitée niveau appelation des listes.
Voici la macro que j'utilise :
Sub creer_liste_matériaux()
colBD = 2
colListe = 11
Set f = Sheets("matériaux")
ligne = 6
f.Cells(ligne + 1, colListe).Resize(1000, 4).Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.Cells(6, colBD), f.Cells(65000, colBD).End(xlUp))
mondico(c.Value) = c.Value
Next c
f.Cells(ligne, colListe) = "matériaux"
f.Cells(ligne, colListe).Font.Bold = True
f.Cells(ligne + 1, colListe).Resize(mondico.Count) = Application.Transpose(mondico.items)
ActiveWorkbook.Names.Add Name:="matériaux!matériaux", RefersTo:=f.Cells(ligne + 1, colListe).Resize(mondico.Count)
'---- niv 2,3,..
For niv = 2 To 2 ' adapter le nombre de niveaux
colBD = colBD + 1
colListe = colListe + 2
ligne = 6
For Each c In Range(f.Cells(6, colListe - 2), f.Cells(65000, colListe - 2).End(xlUp))
If c <> "" And c.Font.Bold <> True Then
Set mondico = CreateObject("Scripting.Dictionary")
For Each d In Range(f.Cells(6, colBD), f.Cells(65000, colBD).End(xlUp))
If d.Offset(, -1) = c Then mondico(d.Value) = d.Value
Next d
f.Cells(ligne, colListe) = c
f.Cells(ligne, colListe).Font.Bold = True
f.Cells(ligne + 1, colListe).Resize(mondico.Count) = Application.Transpose(mondico.items)
ActiveWorkbook.Names.Add Name:="matériaux!" + Replace(c, " ", "_"), RefersTo:=f.Cells(ligne + 1, colListe).Resize(mondico.Count)
ligne = ligne + mondico.Count + 1
End If
Next c
Next niv
End Sub
bois1 représente le nom donné à la plage feuil1!A1:A20 donc il n'est pas question de voir bois1 dans ta liste
Si je met en A1 une liste "matériaux" avec bois dedans, de sorte que quand je le selectionne, il me sorte en A2 ma liste "bois" avec tous mes différentes essences de bois.
J'utilise la formule =indirect(A1)