Afficher un texte dans formulaire en fonction du choix dans menu déroulant
Bonjour à tous,
J'ai créé un formulaire visant à gérer mes stocks et je souhaiterais faire afficher la description/nom de l'article en fonction du code article/référence sélectionné dans le menu déroulant au dessus.
J'ai une feuille qui s'intitule "article" avec un tableau dans lequel se trouvent toutes ces informations (code article, dexcription...). J'ai ensuite une seconde feuille intitulée "Commande" dans laquelle je peux, via un bouton, commander des articles en rupture de stock référencés sur la feuille précédente.
Problème, j'ai besoin que dans mon formulaire VBA, le nom de l'article puisse s'afficher automatiquement sur mon formulaire (et donc dans le tableau de la page dédiée) dès lors que j'aurai sélectionner la référence de l'article.
Ex: Je sélectionne Art-01 et automatiquement il va chercher dans la feuille "Article" le nom ou la description de l'objet qui correspond à Art-01 et vient le mettre dans le formulaire puis dans le tableau une fois le formulaire validé.
Quel code utiliseriez-vous ?
Je vous mets des captures d'écran ci-dessous.
Merci d'avance.
Salut,
Tu as oublié ton fichier-modèle
Cordialement
Salut Yvouille,
Voici en PJ le fichier. Tu verras que dans la feuille "Order", quand tu cliques sur "Ajouter", il y a un champ pour la description. Je souhaiterairas qu'il soit rempli automatiquement en fonction du code article sélectionné dans le menu déroulant au-dessus.
Merci pour ton aide :)
Salut,
Ton fichier est super : je ne peux rien en faire ! Tu as placé des mots de passe qui m'empêche d'utiliser le travail que tu as déjà effectué, de voir ton code afin de le transformer ou que sais-je d'autre.
J'ai donc été obligé de recréer un fichier pour te faire la démo de la solution. Maintenant toi aussi tu as plus de travail, puisque tu vas devoir l'appliquer à ton fichier réel, au lieu de pouvoir utiliser directement mon boulot.
Bien à toi.
En effet je m’en suis rendu compte hier soir et allais te le renvoyer sans. Je voulais éviter que les personnes à qui je vais ensuite transmettre le fichier ne le trafiquent.
Merci et milles excuses !
Yvouille,
J'ai intégré ton code avec les adaptations nécessaires (enfin presque) et j'ai une erreur que je n'arrive pas à expliquer.
Ci-joint le fichier, sans les mots de passe cette fois :)
Merci pour ton aide.
Bien à toi,
Rom
Re,
Je n'ai jamais vu un problème tel que celui-là et ne peux pas t'aider à ce niveau. Je me demande si ça vient du fait que tu as mis des mots de passe et que certains ne seraient pas enlevés, ce qui empêcherait de modifier ton Cbx_article ???
Mais je te propose une solution de remplacement. J'ai placé un deuxième ComboBox à côté du tien, je l'ai également renommé et tu pourras constater qu'il fonctionne bien avec le nouveau code UserForm_Initialize dans le fichier ci-joint.
En passant, il n'est pas utile de préciser Me. comme tu l'as fait et supprime un peu tes Modules, tes UserForm, tes lignes vides à outrance et tes codes inutiles qui embrouillent la compréhension du fichier, un peu comme j'ai tenté de le faire dans le fichier ci-joint, entre autre pour le code du UserForm Add_order.
Re,
Malheureusement VBA affiche une erreur qui empêche le code d'aller au bout et d'inscrire le contenu de mon formulaire dans la ligne dédiée sur la feuille "Order".
Sais-tu pourquoi ? Je te mets les captures et te joins de nouveau ton fichier. J'ai essayé en modifier le premier "Range" : "B:i", 3, 0 pour avoir la colonne D. L'erreur a sauté mais s'est reportée sur la ligne du dessous.
Merci pour ton aide.
Salut,
La macro Private Sub Cbx_article_Change() placée dan le fichier que je t'ai fourni l'autre jour et placée dans le fichier que tu me retournes actuellement fonctionne parfaitement ; elle ne bloque pas sur la ligne i = WorksheetFunction.Match(Cbx_article, .Range("B:B"), 0) tel que celle en jaune dans ton message.
J'en déduit qu'elle ne fonctionne peut-être pas sur un autre fichier que tu as chez toi. La raison la plus probable est que la donnée recherchée n'existe pas sur cet autre fichier ou que tu as modifié une autre chose à Dieu-sait quel niveau !?
J'ai essayé en modifier le premier "Range" : "B:i", 3, 0 pour avoir la colonne D. L'erreur a sauté mais s'est reportée sur la ligne du dessous.
Tout d'abord ta syntaxe est incorrecte. Un range avec une variable doit s'écrire ainsi : Range("B" & i). Ton texte Range("b:i") ne crée pas d'erreur, mais ne fonctionne pas non plus. Quant à ton explication, je n'arrive absolument pas à savoir de quoi tu parles. Tu as modifié le premier range à quelle ligne de quelle macro ? Pour avoir quelle colonne D ? Qu'est-ce qu'une erreur qui saute ?
Si ton soucis se situe plus loin que la partie traitée jusqu'ici - par exemple si ça concerne le code Private Sub CommandButton1_Click() - précise de quelle manière tu complètes le UserForm et à quel moment ça coince (par exemple lorsque tu cliques sur "Valider" ?).
A te relire.
Salut,
Je me réfère à ta demande en privé. Dans la mesure du possible, je te prierais de rester sur ce fil pour continuer la discussion.
Le fichier que tu m'as envoyé en privé n'a semble-t-il strictement rien de confidentiel. T'es-tu trompé de fichier ? Tu peux m'envoyer un fichier confidentiel par message privé mais quand même rester sur ce fil pour les informations. Je ferai très attention de ne pas placer de données confidentielles ici.
Je t'ai demandé de décrire où se produisait le problème et tu me dis : "J'avance étape par étape et lorsque je valide pour que la ligne soit inscrite dans le formulaire, il m'écrit erreur... "
Avec de telles informations, je ne peux strictement rien faire. Dis-moi sur quelle feuille tu démarres le processus, quel bouton tu cliques, quels champs tu remplis, quelles autres manipulations tu effectues avant que ça bloque.
Si nécessaire, fais référence aux noms des objets Excel, comme par exemple : Le ComboBox Cbx_article ou le TextBox Txt_quantité, etc.
A te relire.
Re,
Ok alors je vais être le plus clair possible. Concernant le fichier final, je verrai plus tard si vraiment cela ne marche pas sur notre petit fichier actuel.
La démarche que je suis :
1- J'ouvre ton fichier, celui que tu m'avais envoyé plus haut avec tes ajouts
2- Je me place sur l'onglet "Order" et clique sur "Ajouter"
3- Je remplis le champ "Fournisseur" en sélectionnant "z"
4- Code article : première cbx ( la 2e ne fonctionnait pas) et je choisis ART-00005
5- Description : elle s'affiche automatiquement, c'est parfait, c'est ce que je souhaitais
6- J'écris "1" pour la quantité
7- J'écris "Days" pour l'unité
8- Je clique sur "Ajouter" et là l'erreur apparaît. Erreur "1004". Impossible de lire la propriété "Match" de la classe Worksheetfunction.
Normalement, les infos devraient s'ajouter dans le formulaire puis dans le tableau Excel avant validation. Ceci fonctionnait jusqu'à ce que je nn'introduise le remplissage automatique de la case "description".
J'espère avoir été plus précis.
Merci pour ton aide.
Dans le fichier ci-joint, j'ai modifié le passage ci-dessous afin que ça ne bloque plus.
If Cbx_article <> "" Then
i = WorksheetFunction.Match(Cbx_article, .Range("B:B"), 0)
TextBox1 = .Range("D" & i)
End IfJe n'ai plus l'envie de travailler sur un fichier fictif, on a perdu passablement de temps à cause de cela. Si tu as encore des problèmes, soit tu me fournis ton fichier réel, soit je laisse tomber.
Amicalement.
Alléluia Yvouille, ça marche ! Merci beaucoup, je vais pouvoir continuer à développer mon outil !
Tu es un chic type.
Bon week-end à toi Yvouille et à bientôt :)