Double liste déroulante et double recherchev sur 2 cellules

Bonjour à tous !

Alors voilà, je créé un tableau qui va être utilisé par un certains nombre de mes collègues

Mon entreprise est divisé en différents services, qui possèdent tous un numéro qui leur ai attribué.

Certains des futurs utilisateurs préfère traiter directement par "numéro", d'autres par "intitulé de service".

Ma question est donc la suivante : Est-il possible de créer 2 listes déroulantes sur 2 cellules différentes (Une avec les numéros, la deuxième avec les libellés), et, effectuer une recherchev de la dernière saisie, pour trouver l'autre.

Un exemple :

  • Michel connait les numéros de service, mais pas les intitulés. Il va donc sélectionner dans la liste déroulante de A1 le numéro de service qu'il veut. Le libellé se mettra automatiquement grâce à une recherchev en A2.
  • Jacques connait les intitulés, mais pas les numéros de service. Il va donc sélectionner la liste déroulante de A2 l'intitulé de service qu'il veut. Le numéro se mettra automatiquement grâce à une recherchev en A1.

Je pense qu'effectuer cela est impossible, mais je me trompe peut-être.

Dans le cas où cela serait impossible, comment puis-je réaliser le souhait des utilisateurs de la meilleure manière possible?

Merci à tous !

Bonne journée.

Bonjour

AF-VBA a écrit :

Je pense qu'effectuer cela est impossible

Moi pas !

Mais il faudrait ton fichier pour essayer...

Bye !

Cool ça me met de bonne humeur ton post !

Voilà un fichier.

En vert sont les 2 cellules avec les listes déroulantes.

Merci !

114test.xlsx (11.97 Ko)

Bonjour,

Vous pouvez effectuer cela en utilisant la fonction si et la fonction estnum. La logique sera la suivante:

Si la donnée entrée est un nombre alors vous effectuez le recherchev en utilisant le numéro de département, sinon vous faites le recherchev en utilisant l'intitulé du département.

Je vous conseillerais aussi d'utiliser un sierreur pour chacun de vos recherchev au cas ou l'utilisateur entre une valeur qui n'existe pas (ressource humaine au lieu de ressources humaines par exemple). Donc si votre recherchev retourne une erreur, vous pouvez renvoyer un texte a l'utilisateur "Vérifiez l'orthographe". (au passage, si vous utilisez une liste déroulante, cela ne sera pas un problème).

Clair?

Bonjour Joparisot,

Je vois bien ce que vous voulez dire.

Mais cela ne résout pas vraiment mon problème.

Votre solution marcherait si j'avais une seule liste déroulante avec les numéros et les intitulés en même temps. D'ailleurs, une unique recherchev fonctionnerait si je recopiais ma bd : 1ère moitié de ma BDD = Numéro / Intitulé, et 2ème moitié de ma BDD = Intitulé / Numéro.

Cependant cela n'est vraiment pas pratique pour l'utilisateur à mon avis

Je t'invite à regarder une nouvelle fois mon fichier afin de mieux saisir ma demande.

Merci pour la participation en tout cas

Pourquoi ne faites-vous pas deux listes déroulantes? Une pour demander à l'utilisateur quel type d'entrée il veut utiliser et ensuite une pour l'entrée en elle-même.

Si cela ne vous va pas, comprendre quelle cellule vient d’être modifiée est possible en VBA. Regardez cet article par exemple:

Parce que je n'y avais pas pensé. x)

Il est possible de faire appel à telle ou telle liste déroulante en fonction d'une cellule avec elle même une liste déroulante "Intitulé" ou "Numéro" ?

Cette solution pourrait être bonne effectivement.

Oui:

Ok merci beaucoup !

Je vais étudier tout ça.

Même si j'espère toujours une autre solution miracle qui pourrait me correspondre au mieux.

GMB m'a dit que c'était faisable ... x)

Une proposition, toute simple. Te convient-elle ?

Bye !

182test-v1.xlsx (18.51 Ko)

Tout simple effectivement ... Mais pourquoi pas !

Par contre, est-il possible d'agrandir les données de la liste déroulante, autrement qu'en agrandissant la colonne ?

En plus de ça, l'écriture des données est vraiment petite ...

Une autre façon, mais il y en a d'autres...

Bye !

95test-v2.xlsm (29.38 Ko)

Solution intéressante également, merci !

Mais je pense choisir la plus simple, celle de la concaténation.

Surtout que mon fichier est très lourd, si je dois encore rajouter ce userform dans mes 25 onglets ...

Pas moyen de grossir les caractères de la liste déroulante par contre ?

AF-VBA a écrit :

Pas moyen de grossir les caractères de la liste déroulante...

Avec la méthode ''Validation des données'', je ne vois pas ...

Mais on peut faire autrement en utilisant un contrôle ActiveX : Exemple "Test V3".

Il te faudra néanmoins mettre 3 lignes de code dans chaque feuille VBA pour pouvoir récupérer dans la cellule D3 de ces feuilles la valeur sélectionnée.

En revanche, avec la version avec UserForm il n'y a pas cette contrainte. On peut mettre le code dans la feuille VBA ‘’ThisWorkbook’’ et il sert pour toutes les feuilles, si la liste déroulante est toujours en cellule D3. Exemple Test V4

C’est toi qui vois.

Bye !

42test-v3.xlsm (30.19 Ko)
40test-v4.xlsm (27.49 Ko)

Bonjour !

Pour ce qui est de la V4 : pas possible car le tableau est en bas d'un onglet. Et les onglets n'ont pas tous le même nombre de ligne en fonction de la taille du service.

Pour la V3 : Pourquoi pas, mais j'ai peur que cela alourdisse encore mon fichier ... Je rappelle que j'ai 25 onglets ...

Par contre : je comprends pas trop le lien qui est fait entre la macro et ma BD "N° et Service". Comment ça fonctionne ?

Autre question annexe : la formule décaler que tu utilises dans le nommage des BD. Elle permet de prendre en compte un nouveau service si je rajoute une ligne c'est bien ça ? C'est super pratique !

Car dans le nommage de mes 25 listes de service, j'ai rajouté 2/3 lignes pour d'éventuelles nouveaux sous-services. C'est vraiment pas une bonne solution ...

Merci beaucoup ! D

...je comprends pas trop le lien qui est fait entre la macro et ma BD "N° et Service".

Ce que tu vois en vert au niveau de la cellule D3 est un contrôle Activex. La cellule est juste au-dessous.

Ce contrôle est en fait une liste déroulante qui se remplit en donnant l’adresse de la liste que l’on souhaite y voir et qui est la liste qu’on trouve sur la feuille BDD, en colonne C et que j’ai nommée ‘’NumEtServ‘’.

Pour faire ça :

• Clic sur ‘’DEVELOPPEUR’’ (dans le bandeau)

• Clic sur ‘’Mode Création’’

• Clic sur le contrôle

• Clic droit sur le contrôle (il faut parfois le faire une 2° fois) jusqu’à ouvrir une fenêtre qui offre l’option ‘’Propriétés »

• Clic sur Propriétés

• Dans les propriétés, colonne de gauche dans la fenêtre, rechercher ‘’ListFillRange’’, et saisir sur la même ligne, colonne de droite l’adresse ou le nom de la liste : ici, ce sera :’’NumEtServ’’

Elle permet de prendre en compte un nouveau service si je rajoute une ligne c'est bien ça ?

C’est bien ça !

OK ?

Bye !

Parfait ! Vous êtes vraiment des chefs sur ce forum.

Je vais étudier tout ça ! Merci beaucoup gmb.

Je clôture, tchao !

Rechercher des sujets similaires à "double liste deroulante recherchev"