Bouclage d'un userform

Résolu
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
sipherion Messages postés 1836 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

  1. Polux31 Messages postés 7219 Statut Membre 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
  2. Zoul67 Messages postés 2001 Statut Membre 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
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      slt,

      Pourquoi passer par un MsgBox ?

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

      ;0)
      0
    2. Zoul67 Messages postés 2001 Statut Membre 149
       
      Salut Polux,

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

      A+
      0
  3. 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
    1. Zoul67 Messages postés 2001 Statut Membre 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
    2. 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
  4. Polux31 Messages postés 7219 Statut Membre 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
    1. 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
    2. Polux31 Messages postés 7219 Statut Membre 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
    3. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    Trop compliqué :

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

    If reponse = vbYes Then
    'code
    Else
    'Rien ^^
    End If
    0
    1. 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
    2. Zoul67 Messages postés 2001 Statut Membre 149
       
      DGVDR,

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

      Unload Me 
      UserForm1.Show
      0
    4. Zoul67 Messages postés 2001 Statut Membre 149
       
      Me=MsgBox ?!
      0
    5. 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