Bouclage d'un userform

Résolu
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Merci de prendre de votre temps.

Mon idée :

Remplir un Userform (qui s'appelle Fournisseur), une fois rempli, appuyer sur un bouton "Ajouter".

Lorsque je cliques sur Ajouter, j'ai une MsgBox qui me demande si je veux en ajouter un autre.

If MsgBox("Autre ajout ? ", vbYesNo + vbInformation, "Autre ajout de fournisseur ?") = vbYes Then

Et j'aimerai donc, que si je cliques sur oui, qu'il me relance mon userform "Fournisseur" vierge.
Chose que je n'arrives pas à réaliser
Que je cliques sur oui ou non , l'userform ce ferme.

J'ai pensé à un GoTo, mais j'ai lu sur le net que ça n'était pas terrible comme codage, et je n'y suis pas arrivé...

Merci de votre aide,

DGVDR




5 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

Quel type de contrôles as-tu sur ton UF (TextBox, Combobox etc ...) ?

Tu es sur Excel, Access, VB6 ... ?

:0)

«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

Pourquoi passer par un MsgBox ?
Dans ton UserForm, je mettrais un bouton "Ajouter" et un bouton "Fermer" et c'est tout.

A+

PS : sinon, il faut jongler entre hide/show, load/unload
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
slt,

Pourquoi passer par un MsgBox ?

C'est peut être une contrainte du cahier des charges !!!

;0)
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Salut Polux,

On verra bien...
Pour moi c'est de la surspécification si c'est dans le cahier des charges.

A+
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci à vous deux.

Ce n'est pas une spécification, c'est la solution à laquelle j'avais penser.

Un bouton "Fermer" et un "Autre ajout" peut faire l'affaire , comme le propose Zoul6 !

Cependant, avez vous une idée du code permettant de repartir avec un userform vierge sans le fermer ?

Merci !

DGVDR
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Re,

ça dépend un peu de comment tu as organisé le tout...
Un simple appel à UserForm_Initialize peut suffire si tout est dedans (vidange des TextBox, absence de sélection dans les ListBox,...).

A+
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai essayé en plaçant un

Fournisseur.show apres mon test oui/non de ma MsgBox, ça m'indiquait que mon userform était déjà présent, ce qui est le cas...

Je n'ai pas la solution...
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Voilà une procédure qui permet de boucler sur les contrôles d'un UF

Dim Ctrl As Control

For Each Ctrl In Me.Controls
    'Efface les saisies des TextBox
    If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Text = ""

    'Efface les libellés des Label
    If TypeOf Ctrl Is MSForms.Label Then Ctrl.Caption = ""

Next Ctrl 

0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Polux,

Peux-tu m'expliquer ce code ?

Dans le sens ou "For Each Ctrl" = ? Quel effet ?

"As Control" = Cible quels objets?

Merci de ton aide,

DGVDR
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
For Each Ctrl In Me.Controls

C'est une boucle sur tous les controles (TextBox, Label, ComboBox, ListBox etc etc ...) contenus sur l'UF.

Ctrl As Control représente l'objet de la collection Controls contenu dans l'UF.

TypeOf ... Is ... permet de connaître le type de controle.
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
Trop compliqué :

reponse = MsgBox("Autre ajout ? ", vbYesNo)

If reponse = vbYes Then
'code
Else
'Rien ^^
End If
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Jusque là, j'y étais arrivé.

Le problème c'est le 'code du
If reponse = vbYes Then

Je ne sais pas comment faire revenir mon userform vierge pour une nouvelle entrée
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
DGVDR,

En fait, si tu nous mets le fichier à disposition sur https://www.cjoint.com/ on te trouvera sans doute des solutions...
0
sipherion Messages postés 1809 Date d'inscription   Statut Membre Dernière intervention   286
 
http://www.ozgrid.com/forum/showthread.php?t=61776

Unload Me 
UserForm1.Show
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Me=MsgBox ?!
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
La solution de sipherion fonctionne, je n'avais en effet pas penser à le décharger avant de poser un Fournisseur.show !

Merci à vous,

DGVDR
0