Listes deroulantes utilisant 1, 2 ou 3 conditions

Bonjour a tous

Par ce beau temps confiné

Je cherche a creer un formulaire de saisie de commande (Sheet1), derriere lequel se trouverait des donnees du catalogue (feuilles DB2). Apres avoir renseigné le formulaire, j'execute une macro (Sheet1.ExportCSV3) pour generer un fichier .csv a envoyer par email.

Les produits sont des lentilles de contacts.

Ci joint mon fichier.

- Les colonnes A, B et C sont a renseigner par l'utilisateur.

Probleme numero 1 :

Ensuite l'utilisateur doit:

  • soit renseigner la colonne E a partir de ma liste deroulante, et la cellule D viendrait afficher le code correspondant (vlookup dans ma cellule)
  • soit renseigner la colonne D (=ecraser ma formule) s'il connait le code produit (et dans ce cas la colonne E trouverait directement le nom du produit correspondant => je voulais faire un vlookup en colonne E mais il me dit recherche circulaire!),

L'idée c'est que l'on puisse renseigner au choix la colonne D ou E, sachant que l'autre viendrait se completer automatiquement.

Probleme numero 2:

La ca se complique. Sur une lentille de contact, on doit choisir la puissance : Sphere, et parfois Cylindre, Axis ou encore Addition.

Le fait est qu'un produit donné ne contient pas forcement la meme gamme de Sphere/Cylindre/Addition qu'un autre.

  • Colonne F : devrait etre une liste deroulante ne proposant que les option possible en fonction du code produit (colonne D). Ex: pour le produit 162, j'aimerais avoir une liste qui propose deux valeurs : 8.8 et 8.4
  • Colonne G : idem sur certains produits, plusieurs diametres sont possibles (dependance a la colonne D) ex: produit 265 j'ai trois diametres possibles
  • Colonne H : idem dependance a D
  • Colonne I : on complique un peu, les valeurs sont differentes selon la combinaison colonne D + colonne H. Et oui pour un meme produit, les cylindres disponibles varient en fonction de la Sphere choisie
  • Colonne J : valeurs dependantes des colonnes D + H + I
  • Colonne K : dependance a D

Colonnes F a K devraient donc etre des listes deroulantes.

Bien sur, l'idée est que je puisse alimenter et modifier ma feuille DB2 sans devoir tout rechanger a chaque fois ... Et ma DB a environ 400000 lignes ..

J'ai cherché sur pas mal de sites mais les listes deroulantes a 3 criteres je ne trouve pas. Peut etre y'a t-il un moyen plus simple je ne sais pas ?

Je suis sur Excel 365. Merci par avance,

Aurelien

13test-macro.xlsm (199.40 Ko)

Bonjour Aurelien le forum

ton fichier en retour avec le début jusqu'à la colonne G tu regardes et tu me redis

a+

Papou

Bonjour Aurelien le forum

ton fichier en retour avec je pense ce que tu veux, tu ouvres tu lis tu testes et tu me redis

pas de réponse à ma version V1 ???

a+

Papou

Ecoute Papou moi je suis juste bluffé par ce que tu as fait. Je n'y aurais pas pensé mais surtout je n'aurais pas su faire

En plus le niveau de detail, garder en memoire le numero de commande et compte client, c'est top.

Le filtre des Axes en fonction du cylindre et produit fonctionne bien !!

Et tu as tout a fait raison, je n'ai qu'un diametre pour le produit 265. Et d'ailleurs cela n'arrive jamais, j'ai verifié ma DB de 400000 lignes.

Du coup tu as tellement élevé le niveau que je suis un peu perdu pour faire les ajustements moi meme lol

J'ai quelques questions histoire pour moi de comprendre la démarche :

- si je veux ajouter des data, je copie / colle juste dans l'onglet "DB2" ? je peux ecraser ?

la feuille "Sheet4", est-ce qu'elle sert? car "FamilyPackage" je vois que oui

- et si je veux plus tard rajouter un champs (par exemple : couleur de la lentille), est-ce que je peux y arriver moi meme facilement ?

- peut-on faire en sorte que, apres avoir cliqué sur "ajouter a la liste", les valeurs Base/Diametre/Sphere/Cyl/Axe/Addition ne s'efface pas ? car bien souvent pour la ligne suivante on va juste changer le cylindre par ex. Et c'est l'utilisateur qui est maitre pour effacer en cliquant sur le bouton "reset"

- dans le champs date de la commande, je voulais indiquer la date sous forme "dd-mm-yyyy" (en fait c'etait pour etre raccord avec le format de ma colonne B et eviter les confusions). Je suis donc allé voir la macro et pour la case correspondante, je ne vois que ca , est-ce que je cherche au bon endroit ?

Private Sub T3_Change()
End Sub

- S'il n'y a qu'une valeur possible pour un champs (exemple la base ou le diametre, dans pas mal de cas il n'y a qu'un choix possible), est-ce que l'on pourrait afficher par defaut la valeur dans la case ? mieux, et plus generalement, peux t-on afficher la premiere valeur de la liste dans la case pour les champs Base et Diametre ? comme ca si la liste ne contient qu'une valeur, on a meme pas besoin de derouler la liste. Bien sur il faut toujours attendre de savoir de quel produit on parle pour savoir qu'elle valeur afficher.

Si joint ma V3, j'ai aussi ajouté un petit bouton pour effacer les donnees, et un autre bouton pour generer un .csv et le mettre en PJ d'un email, car ca sera ca mon but final (cette partie la je m'en occupe s'il doit rester des ajustements a faire je saurais me debrouiller)

Merci bcp

Aurelien

Bonjour Aurelien le forum

ton fichier V4 avec les modifications et de la lecture

a+

Papou

Rechercher des sujets similaires à "listes deroulantes utilisant conditions"