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
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
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
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)
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