XL 2019 UserForm liste déroulante (cascade) avec ajout de données/modification

kinders59

XLDnaute Nouveau
Bonjour tout le monde,

Je suis en train de réaliser un fichier qui sera envoyé à des fournisseurs (qui vont remplir les onglets pour le moment masqués) mais qui sera aussi utilisé par moi et potentiellement dans le futur d'autres personnes de l'entreprise (pour ajouter des données dans les onglets visibles).

J'ai réalisé un UserForm dans mon onglet "Données" qui s'ouvre lorsque je clique sur le bouton "Ajouter des données", dans ce UserForm j'ai plusieurs liste déroulante modifiable et c'est là que je commence déjà à me perdre.

Je voudrais que mes listes déroulantes soit en cascade et donc recherche mes valeurs déjà présentes dans mes différents onglets.

- Pour la première liste déroulante N° Fournisseur je viens rechercher mes données dans la colonne A de l'onglet "Données"

- Pour la seconde liste, le fournisseur dépend du n° fournisseur comme on peut le voir dans la colonne B de l'onglet "Données"

- Pour ma troisième liste, ma matière correspond au fournisseur et se situe dans l'onglet "Matière"

- Enfin ma dernière liste, l'épaisseur dépend du fournisseur et de la matière et se situe dans l'onglet Epaisseur

J'ai réussis dans mes onglets à faire le rapprochement via des formules comme celle-ci (qui me permet de retrouver l'épaisseur en fonction de la matière et du fournisseur) :

=DECALER(Epaisseurs!$A$2;1;EQUIV(Généralités!$B$2&" "&Généralités!$A10;Epaisseurs!$2:$2;0)-1;NBVAL(DECALER(Epaisseurs!$A$2;1;EQUIV(Généralités!$B$2&" "&Généralités!$A10;Epaisseurs!$2:$2;0)-1;100;1));1)
Mais je ne sais pas comment le reproduire en VBA ...

Ensuite vient le plus gros des problèmes j'aimerais pouvoir proposer l'ajout et la modification de données par mon userform

C'est à dire que potentiellement la personne pourrait rentrer toutes les données elle même et cliquer sur le bouton "Ajouter" , dans ce cas :

- Mon numéro de four viendrait s'ajouter à la liste en colonne A dans l'onglet "Données" à la suite des autres bien-sûr

- Mon fournisseur s'ajouterait dans la colonne B dans l'onglet "Données" à la suite des autres (en sachant qu'il doit être à côté de son numéro de four)

- Ainsi que dans l'onglet "Matière" sur la ligne 2 à la suite des autres : S'il s'agit d'un nouveau fournisseur

- Ma matière viendrait s'ajouter dans l'onglet "Matière" elle doit s'ajouter sous le fournisseur associé

- Dans mon onglet "Epaisseur" si nous avons un nouveau fournisseur, il doit être ajouté ligne 2 avec sa matière associée (par exemple : j'ai rempli dans le formulaire Fournisseur : G et matière : Compact) alors en ligne 2 à la fin de ceux déjà présent j'ai "G Compact" qui s'ajoute, et en dessous j'ai mon épaisseur qui vient s'ajouter aussi par rapport à ce que j'ai ajouté dans mon UserForm.

Bien évidemment, j'aimerais qu'il soit possible d'ajouter une donnée que sur un paramètre, par exemple :

Je souhaite ajouter la matière Bambou sur mon fournisseur B et avec une épaisseur de 20 (car la matière n'est pas encore présente)

Du coup, je sélectionne mon numéro de four qui va s'associer au fournisseur B j'ai donc mes deux premières combobox qui sont existantes, ensuite dans matière je rentre "Bambou" et dans épaisseur "20"

Du coup, lorsque je click sur "Ajouter"

- J'ai ma matière "Bambou" qui vient s'ajouter sous la colonne du fournisseur B dans l'onglet "Matière"

- J'ai la création d'une colonne "B Bambou" et l'ajout de l'épaisseur 20 dans mon onglet "Epaisseurs"

Si maintenant je souhaite n'ajouter qu'une épaisseur avec un fournisseur et une matière déjà présente alors je sélectionne dans mon userform les bonnes données pour :

- N° Fournisseur / Fournisseur / Matière

Puis je rentre moi même une épaisseur dans le cadre : Epaisseur

Alors dans l'onglet Epaisseur vient s'ajouter sous le bon fournisseur/matière (présent en ligne 2) ma nouvelle épaisseur.

Je ne sais pas si je suis assez compréhensible dans mon besoin, je maitrise encore assez mal le UserForm et donc je ne suis même pas sûr que ce que je veux faire et possible alors voilà je jette une bouteille à la mer afin d'avoir de l'aide et savoir si quelqu'un sera m'aider

Bonne journée à tous et merci d'avance !!
 

Pièces jointes

  • Userform-Aide.xlsm
    70.1 KB · Affichages: 76

kinders59

XLDnaute Nouveau
Oui c'est cela.
Il se peut même que le fournisseur et la matière soient affichés d'office s'il n'y que ceux là dans la base. Encore qu'il faudrait peut être cliquer dessus pour les figer si on a l'intention d'ajouter une nouvelle épaisseur …
Après vient le problème de savoir comment je pourrais utiliser ses données sur mon onglet "Généralités" sans doublon dans une liste déroulante (surtout pour la partie liste déroulante d'épaisseur qui m'a demandé de joindre nom du four et matière dans la même cellule pour la recherche) et non un userform 😅
Rah je me triture la tête depuis 3 jours sur ça mon cerveau va exploser haha
 

kinders59

XLDnaute Nouveau
NumFourN° FourFourMatièreEpaisseur
1​
20000​
ABois
16​
2​
20000​
ABois
20​
3​
20000​
ABois
8​

Bonjour Danreb, kinders59 et le forum,

Pourquoi ne pas référencé comme ci-dessus ce serais plus simple,

bonne continuation jcf6464
Bonjour jcf6464,

Qu'elle serait l'utilité de passer par cette colonne supplémentaire ? (vraie question je n'y connais pas grand chose en UserForm etc)
 

Dranreb

XLDnaute Barbatruc
Le même UserForm de consultation/mise à jour pourrait être équipé d'un bouton supplémentaire servant à appliquer l'élément retenu dans une plage de cellules sélectionnée. Mettez dans ce cas la propriété ShowModal de l'UserForm à False. Ce sera plus souple d'utilisation.
Mais … votre onglet Généralité n'était-il pas toujours encore une table annexe dont on n'aura plus besoin ?
 
Dernière édition:

kinders59

XLDnaute Nouveau
Le même UserForm de consultation/mise à jour pourrait être équipé d'un bouton supplémentaire servant à appliquer l'élément retenu dans une plage de cellules sélectionnée. Mettez dans ce cas la propriété ShowModal de l'UserForm à False. Ce sera plus souple d'utilisation.
Tu m'as totalement perdu cette fois 😔

Je suis un vrai novice sur les UserForm et je n'ai hélas pas comprit ta réponse désolé ..
 

kinders59

XLDnaute Nouveau
L'idée c'est de se passer complètement des validations de donnéees. Au lieu de cela on affiche l'UserForm et on le muni d'un bouton pour envoyer les Info dans les cellules.
Le problème c'est que sur mon onglet "Généralités" je dois rester avec des listes déroulantes (pour la partie qui est remplie par les fournisseurs), on va dire que le userform est vraiment pour le back (nous) si on doit venir ajouter des informations que le fournisseur pourra ensuite utiliser.
 

kinders59

XLDnaute Nouveau
En fait mon fichier est de base fait pour que les fournisseurs puisse nous envoyer leur "data"
Nous avons préalablement déjà des données par les négociations ou anciens fichiers qui fait que l'on connait déjà notre liste de fournisseur, avec leur épaisseur et matière actuelle (mais il est possible que demain il y est une suppression de matière par exemple ou l'ajout d'une forme sur une matière épaisseur donnée)
Du coup dans l'onglet généralité le fournisseur vient choisir :
- Sa matière / Epaisseur associée à sa matière / forme disponible pour cette matière et cette/ces épaisseur(s)

Ensuite dans les autres onglets :
-Onglet Finition : le nom des finitions qu'ils proposent (en fonction de la matière de l'épaisseur et de la forme : c'est surtout ici qu'on a de nouvelle chose)
- Onglet limite dimensionnelle : Limite pour une matière et une forme
....

Ce n'est pas un soit une table annexe c'est bien quelque chose que le fournisseur va venir sélectionner et qui va ensuite pré-remplir certains autres onglets ou on demande plus de données.

Je ne sais pas si c'est beaucoup plus clair :/

Merci à toi pour le temps en tout cas !
 

Dranreb

XLDnaute Barbatruc
Vous voulez dire que c'est un fichier envoyé à un seul fournisseur ?
Dans ce cas ne mettez pas dans le tableau les infos qui lui sont propres, juste les infos de ses articles.
Et dans un classeur central à vous de quoi Exporter/Importer ceux d'un fournisseur
 

kinders59

XLDnaute Nouveau
Vous voulez dire que c'est un fichier envoyé à un seul fournisseur ?
Dans ce cas ne mettez pas dans le tableau les infos qui lui sont propres, juste les infos de ses articles.
Et dans un classeur central de quoi Exporter/Importer ceux d'un fournisseur
Alors on l'envoi à plusieurs fournisseurs pas un seul mais effectivement chaque fournisseur à bien ses données propres à lui ;)
C'est pour ça que nous avons un fichier avec l'ensemble des données de tous les fournisseurs :)
 

Dranreb

XLDnaute Barbatruc
C'est que je ne sais pas encore exactement comment j'écrirais les procédures d'inportation/exportation
Je pense que je le ferais peut être avec deux tableaux, un avec seulement les informations du fournisseur et un autre avec seulement les articles mais avec juste le numéro du fournisseur devant.
 

Dranreb

XLDnaute Barbatruc
Ou alors on envoie vraiment le même fichier à un seul fournisseur en s'arrangeant pour que ses infos soient figées et on attend qu'il revienne ? …
Non hein ? … Il vaudrait mieux peut être mieux un dossier avec les fichiers des fournisseurs et deux procédures, une pour éclater le fichier central dans ceux ci et l'autre pour les y regrouper.
 

Discussions similaires

Réponses
8
Affichages
528

Statistiques des forums

Discussions
314 708
Messages
2 112 097
Membres
111 416
dernier inscrit
philipperoy83