Excel : validation données liste

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

A voir également:

2 réponses

Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   1 462
 
Salut,

dans dans Insertion/Nom/Définir tu devrais avoir tes noms
exemple

bois1 plage feuil1!A1:A20
bois2 plage feuil2!C1:C35

et dans données / Validation / liste
tu mets pour avoir la liste bois1
=bois1

pour la liste bois2
=bois2
0
Sandrine
 
Oui mais justement je veux qu'ils aient le même nom, car en plus je dois executer des listes en cascades : par exemple première cascade liste "matériau", avec dans cette liste : béton, bois, acier,... puis ça me renvois à une deuxième liste en fonction du choix par ex "bois", et ça me donne la liste de tous les types de bois. Mais je ne voudrais pas que dans ma première liste il apparaisse "bois1".
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
0
Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   1 462
 
re,

bois1 représente le nom donné à la plage feuil1!A1:A20 donc il n'est pas question de voir bois1 dans ta liste
0
Sandrine
 
Dans la liste d'avant qui va me renvoyer a la liste bois, il apparaitra bien puisqu'il faut que les noms des listes soient les même.
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)
0
Sandrine
 
Personne pour m'aider ??
0