Liste déroulante dans Excel

pimos

XLDnaute Nouveau
voilà. cela fait 3-4h que je suis sur ce soucis et que je ne parviens pas à trouver la solution à mon problème donc:

Je voudrais automatiser la saisie dans une feuille Excel.

Je voudrais exactement le même résultat que l'on obtient avec la manipulation:
- clic droit sur une cellule
- liste déroulante de choix...

2 problèmes:
- la liste de choix est vide quand la cellule du dessus est vide: je voudrais que la liste contiennent toutes les valeurs de la colonne de la cellule sélectionnée et enlever les blanc et doublons
- je voudrais que cette liste s'affiche lors de la sélection de la cellule sans avoir besoin de "clic droit ...."

J'ai testé 2 choses:
1- Données/Validations...
dans sources je mets la colonne D (par exemple)
et copie cette validation dans toute la colonne
=> pb la liste contient les blancs et les doublons

2- Données/Validations...
dans source je mets "Liste1"
en VBA: je met à jour la colonne D d'une feuilles "listes" avec les infos de
la colonne D de la feuille de saisie (trie + enlèvement des blancs)
puis je fais :
Code:
Feuil3.Names.Add Name:="Liste1", RefersToR1C1:="=Listes!D0:D" & i - 1
pour mettre à jour la plage de données de Liste1
=> pb la plage "Liste1" n'est pas mis à jour
 
Dernière édition:

Kobaya

XLDnaute Occasionnel
Re : Liste déroulante dans Excel

Salut pimos,

et ben non, et pour cause !
Comme l'indique l'intitulé du paramètre (RefersToR1C1), la fonctino attend une référence de cellule de type R1C1.
De plus la première ligne d'Excel ne peut pas être 0.

Donc :
Code:
Feuil3.Names.Add Name:="Liste1", RefersToR1C1:="=Listes!D0:D" & i - 1
devient
Code:
Feuil3.Names.Add Name:="Liste1", RefersToR1C1:="=Listes!R1C4:R" & i - 1 & "C4"

Je n'ai pas testé, mais ça a plus de chance de fonctionner :D
 

Jocelyn

XLDnaute Barbatruc
Re : Liste déroulante dans Excel

Bonjour le Forum,
Bonjour pimos, Kobaya,

bon alors un exemple par données validation et des formules le tout un peu tiré par les cheveux mùais a priori ca marche

Jocelyn
 

Pièces jointes

  • pimos.zip
    2.6 KB · Affichages: 53

pimos

XLDnaute Nouveau
Re : Liste déroulante dans Excel

Salut pimos,

et ben non, et pour cause !
Comme l'indique l'intitulé du paramètre (RefersToR1C1), la fonctino attend une référence de cellule de type R1C1.
De plus la première ligne d'Excel ne peut pas être 0.

Donc :
Code:
Feuil3.Names.Add Name:="Liste1", RefersToR1C1:="=Listes!D0:D" & i - 1
devient
Code:
Feuil3.Names.Add Name:="Liste1", RefersToR1C1:="=Listes!R1C4:R" & i - 1 & "C4"

Je n'ai pas testé, mais ça a plus de chance de fonctionner :D

à la place de "RefersToR1C1" j'ai mis "RefersTo" et cela ne fonctionne pas mieux
 

pimos

XLDnaute Nouveau
Re : Liste déroulante dans Excel

Bonjour le Forum,
Bonjour pimos, Kobaya,

bon alors un exemple par données validation et des formules le tout un peu tiré par les cheveux mùais a priori ca marche

Jocelyn

Peux-tu m'expliquer les différentes étapes pour la mis en place de ta solution car je ne comprends pas bien :(

c'est surtout ça qui bloque:
=DECALER(Feuil1!$A$3;;;MAX(SI(Feuil1!$A$1:$A$3000>0;LIGNE(Feuil1!$A$1:$A$3000)))-2)
=DECALER(liste!$A$2;;;NB.SI(liste!$A:$A;">&0")-1)

Comment? ou mettre la formule?
 
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : Liste déroulante dans Excel

re,

Alors les formules dont tu parles servent a créer des plage nommées dynamique (ca évite de changer les référence des cellules dans les formules) pour créer une plage vas dans menu insertion => Nom => Définir dans la fenetre qui s'ouvre dans le champ "nom dans le classeur tape le nom que tu veux dans mon exemple "Nom" ensuite dans le champ "fait référence à" la formule =DECALER(Feuil1!$A$3;;;MAX(SI(Feuil1!$A$1:$A$3000> 0;LIGNE(Feuil1!$A$1:$A$3000)))-2)

ensuite création de l'autre plage nommée Liste même façon de faire

Jocelyn
 

Discussions similaires

Réponses
2
Affichages
319

Statistiques des forums

Discussions
312 545
Messages
2 089 453
Membres
104 169
dernier inscrit
alain_geremy