-
1 pièce(s) jointe(s)
Liaison de 2 userforms
Bonjour,
Je souhaite à partir d'un premier formulaire en ouvrir un second et y envoyer une donnée du premier (un prénom sélectionné dans une combobox). Jusque là, tout est bon, ça fonctionne.
Mais lorsqu'à partir de cette donnée envoyée, je l'utilise pour en trouver une autre (le nom associé) avec la commande VLookup dans un tableau excel, ça ne fonctionne plus, le second formulaire ne s'ouvre plus... Je ne comprend pas...
En PJ un fichier vite fait avec tout ce qu'il faut, en supprimant la commande VLookup, ça fonctionne.
Si quelqu'un arrive à m'expliquer ce qui ne va pas...
Merci beaucoup
-
Bonjour,
Conformément aux règles du forum, ne joints pas de fichier, mais écrit le code en question. Dis-nous où tu bloques sur ton code et donne-nous les éventuels messages d'erreurs et leurs localisations dans le code. Si nécessaire, tu peux joindre des captures d'écrans.
Quand tu écris ton code, n'oublie pas de le mettre entre balises (bouton #) pour une meilleure lisibilité.
A bientôt avec plus de précisions ;)
-
dans ton code la variable base est vide
Code:
Me.LblNom = Application.WorksheetFunction.VLookup(Base, Sheets("Main").Range("A1:B" & Line1), 2, 0)
En remplaçant base par UserForm1.cbbNom.Value chez moi ça fonctionne.
Code:
Me.LblNom = Application.WorksheetFunction.VLookup(UserForm1.cbbNom.Value, Sheets("Main").Range("A1:B" & Line1), 2, 0)
Bonne journée.
-
Effectivement, en recherchant directement la donnée de mon premier formulaire sans la définir dans une nouvelle variable sur mon second, cela fonctionne... je ne comprend pas ce que cela change... Merci a_diard
J'attend un peu avant de marquer le sujet comme résolu, si quelqu'un peux m'expliquer le pourquoi du comment...
Merci beaucoup
Et désolé pour les entorses aux règles du forum... je ferais bien plus attention maintenant.
-
je n'ai pas vu ou et comment tu renseigne ta variable
vérifie son contenu avec l'espion
au moment du vlookup ta variable n'a pas la bonne valeur ou le bon format.
bonne soirée.
-
re
bonsoir
si ta variable est instancié dans l'usf 1 il es normal qu'elle soit vide dans l'usf2
il faut que tu la dim dans un module standard et en public
ytu a cela dans la FAQ concernant la "porté des variables"
-
Bonjour,
les propositions de a_diard et Patrick sont toutes les deux correctes :coucou:
la meilleur (voir impérative) dépendra :
- de l'état (chargé ou non) de Userform1
- de la durée de conservation totale souhaitée de cette variable, est-ce qu'on "passe" simplement la valeur à Userform2 ou est-ce qu'on "stocke" pour réutilisation multiples ?
-
Bonjour,
A patricktoulon: J'ai trouvé différentes choses concernant les variables qui sembles intéressantes, mais de sujet directement sur la "porté des variables"... Pourrais-tu me mettre un lien? Notamment je comprend maintenant ce que veut dire instancier la variable et en effet, elle l'était dans le 1er formulaire.
La méthode de a_diard fonctionnait pour moi (aller chercher la variable directement dans l'usf1), mais j'ai un nouveau problème, la variable peut provenir de 2 usf (A et B)différents. Il faut soit que je l'exporte des l'usfA et B vers l'usf2 (ou que je "dim dans un module standard et en public" mes 2 variables initiales) soit que je créer une condition, si usfA actif aller chercher la variable dans celui-ci, si le B est actif, aller la chercher dans le B...
A joe.levrai: l'usf1 sera toujours chargé en arrière plan, à mois que je ne le ferme (manuellement ou dans la macro) et je devrais toujours passer par un premier usf (A ou B maintenant) pour atteindre l'usf 2. La variable en question est utilisée dans l'usf2 et disparait à sa fermeture.
-
2 pièce(s) jointe(s)
re
il me semble que tu t égare un peu
c'est quoi cette variable :un string,un long,
si c'est une variable numérique ou texte nul besoins de variable autant se servir du tag de l'un des userforms ou même la valeur d'un control
exemple j'ai un boutons dans l'userform1
quand j'apuie sur ce bouton ca load le userform2 et je veux utiliser la valeur d'un textbox du userform1 dans userform2
exemple dans ce petit fichier joint
Pièce jointe 271859
-
La variable est un string. J'ai essayer de faire référence à la valeur d'un contrôle mais ça ne fonctionne pas. Cela me met la même erreur que dans le fichier que j'avais mis à l'ouverture du post...
J'ai réussi en remplaçant dans mon Vlookup la variable à rechercher par la lien du contrôle qui la contient dans le premier formulaire (userform1.cbbNom dans mon exemple).
Sinon j'ai réussi également en déclarant la variable en public.
En ce qui concerne la fonction TAG, je ne connaissait pas même en ayant regardé un peu, je ne comprend pas comment elle s'utilise.