Pb. de liste déroulante dans une cellule

Bonjour à tous,

J'ai cherché vainement presque toute l'après midi d'hier sur le net une réponse à un problème de liste déroulante dans une cellule. J'ai bien trouvé des exemples, mais rien qui ne corresponde vraiment à ma recherche. Je me tourne une fois encore vers vous pour rechercher une solution.

J'ai créer un exemple simplifié à partir de ma base de données Excel que je joint à cette discussion.

Je cherche en fait à créer une liste déroulante dans l'onglet "Paiements" à partir de la cellule A6, qui afficherait tous les Patronymes de l'onglet "Actifs" colonne E de E6 à E? et qui donnerait à la cellule A de l'onglet "Paiements" le N° RG (colonne A de l'onglet"Actifs") correspondant au Patronyme choisi.

En clair, comme on ne connait pas tous les numéros de clients par coeur, je cherche à le récupérer en affichant les noms des clients!

Un des problèmes auquel je me heurte, c'est aussi la taille de l'onglet "Actifs".

En effet, dans l'exemple j'ai mis 11 actifs, mais il peut très bien y en avoir 5 ou 50. Donc pas possible de nommer une plage de cellules.

Dans l'application réelle, on passe d'un onglet à l'autre par procédure. L'onglet "Actifs" sera toujours trié par Patronyme croissant, et je pense qu'il est possible de copier et de déterminer le nombre d'enregistrements de l'onglet "Actifs" dans la macro qui ouvre l'onglet "Paiements".

Merci de votre aide.

Joseph

https://www.excel-pratique.com/~files/doc2/ListeDeroulante1.xls

Bonjour,

Je te propose de mettre ta liste déroulante en colonne B.

Pour cela, auparavant, il faut nommer ta liste des noms et prénoms.

Nom - Insertion - Définir - Nom : Liste_actifs - Fait référence à :

=DECALER(Actifs!$E$5;1;0;NBVAL(Actifs!$E$6:$E$100))

Ensuite, onglet Paiements, sélection B6:B100, puis Données - Validation - Autoriser ; Liste - Source : =Liste_actifs

En A6, pour retrouver le n° de l'actif, cette formule :

=SI(NB.SI(Actifs!$E$6:$E$100;Paiements!$B6)=0;"";INDEX(Actifs!$A$6:$A$100;EQUIV(Paiements!$B6;Actifs!$E$6:$E$100)))

Je te laisse tester

@+

bonjour;

voici les 2 premières questions dans le fichier avec des petits changements dans les colonnes B et E.

cordialement.

https://www.excel-pratique.com/~files/doc2/ListeDeroulanteTest.xls

Bonjour thibo,

Votre solution fonctionne du tonnerre.

La connaître c'est l'adopter !

Je suppose qu'il n'y a pas d'autre solution concernant la taille de la zone à délimiter pour le nombre d'actifs que de mettre de E6 à E?????, sachant que je ne sais jamais combien il y en aura en tout.

Par contre comme j'ouvre l'onglet "Paiements" par macro, ne pourrait-on pas supposer qu'en calculant le nombre d'enregistrements de la feuille "Actifs" on puisse transmettre le résultat dans une cellule de la feuille "Paiements" et s'en servir pour la formule?

Mais là je cherche sûrement la petite bête.....

En tous cas, merci beaucoup de votre aide thibo.

PS : je suppose que l'onglet "Actifs" doit être trié par ordre croissant de patronyme pour qu'il n'y ait pas de souci.

Re PS: comme je ne sais pas si vous pourrez lire ma réponse si je mets résolu tout de suite, je ne vais pas le faire maintenant mais plus tard.

Bonjour

Modifie la formule de Liste_actifs comme ceci :

=DECALER(Actifs!$E$6;;;NBVAL(Actifs!$E:$E)-1)

De cette façon la plage s'adaptera automatiquement.

Pas besoin de la trier alphabétiquement

Amicalement

Nad

re,

Joseph67 a écrit :

Je suppose qu'il n'y a pas d'autre solution concernant la taille de la zone à délimiter pour le nombre d'actifs que de mettre de E6 à E?????, sachant que je ne sais jamais combien il y en aura en tout.

SI, la fonction DECALER que je t'ai proposé permet justement de gérer de façon dynamique la longueur de la liste de noms.

Et donc, pas besoin de macro pour déterminer le nombre d'enregistrements.

Je te joins ton fichier adapté (avec liste de validation sur colonne B).

https://www.excel-pratique.com/~files/doc2/Joseph67.zip

@+

Edit : Bing ! Salut Nad

@+

re,

Encore merci.

J'avais déjà adapté tes formules sur ma base de données excel.

C'est nickel.

Cordialement

Joseph

Re,

Merci thibo et nad-dan.

Joseph

Bonjour tous,

Nad-Dan, thibo, maherom,

J'ai adapté votre formule qui permet de rechercher le N° de l'actif de façon à ne pas avoir à marquer par exemple E6:E100 comme je ne connait pas à l'avance le nombre d'enregistrements de l'onglet actifs.

Dites moi ce que vous en pensez SVP. (à priori c'est bon!)

=SI(NB.SI(DECALER(Actifs!$E$6;;;NBVAL(Actifs!$E:$E)-1);'2009Paiements'!$B6)=0;"";INDEX(DECALER(Actifs!$A$6;;;NBVAL(Actifs!$A:$A)-1);EQUIV('2009Paiements'!$B6;(DECALER(Actifs!$E$6;;;NBVAL(Actifs!$E:$E)-1)))))

Merci et à bientôt

Cordialement Joseph

PS : j'ai posté une nouvelle question s'intitulant : VBA effacer la valeur d'une cellule sans effacer la formule (qu'elle contient). Si jamais vous avez un peu de temps pour la consulter....ce serait super.

Rechercher des sujets similaires à "liste deroulante"