Problème MsgBox

Problème MsgBox - VB/VBA/VBS - Programmation

Marsh Posté le 09-02-2010 à 16:30:50    

Bonjour,
 
Je viens de rencontrer un petit problème qui commence à m'énerver (lol, je cherche mais ne trouve pas!).
C'est à dire que dans mon projet, il y a une Userform dans laquelle il y a une Textbox et un bouton.
 
Lorsque l'on active cette Userform, il y a 3 conditions pour la Textbox qui s'active en appuyant sur le bouton.
 
Condition 1:
TextBox=" "
La textbox est vide et un Msgbox apparait "Veuillez saisir du texte", lors de l'appui sur le bouton.
 
Condition 2:
TextBox<>" "
La textbox n'est pas vide mais le texte saisi appartient à la liste, donc apparition d'un Msgbox "Votre saisie existe déjà!" lors de l'appui sur le bouton.
 
Condition 3:
TextBox<>" "
La textbox n'est pas vide et le texte ne figure nul part, alors le programme continue lors de l'appui sur le bouton.
 
Mon problème se situe pour les cas 1 et 2. En effet je n'arrive pas à fermer le MsgBox sans que la procédure suivante avec la Userform ne se termine.
 
J'aimerais, par exemple que pour la condition 1, lorsque la Userform apparait et que l'on ne saisisse rien dans la textbox, dès l'appui du bouton la Msgbox informe l'utilisateur qu'il n'y a rien de saisi dans cette textbox. Alors à la fermeture de la MsgBox, on a la possibilité de ressaisir dans la textbox plutôt que de relancer la userform. M'avez-vous compris?
 
Merci pour votre aide

Reply

Marsh Posté le 09-02-2010 à 16:30:50   

Reply

Marsh Posté le 09-02-2010 à 21:15:19    

Non.
 
Tes conditions 2 et 3 sont identiques et indique le contenu de la textbox est différent de la chaine de caractère contenant 1 espace.
 
Sinon, si tu veux boucler tan que les conditions que tu veux ne soient pas remplies, il faut utiliser un truc comme de do...loop
 
Exemple :


do
  if textbox="" then 'Textbox vide
   msgbox "Veuillez saisir un texte"
  else if textbox<>" " then '2nd condition qui n'est pas bonne
    msgbox "Le texte existe déjà"
  else 'sinon, tout est OK, sortir de la boucle
    exit do
  end if
   textbox.setfocus 'Redonne le focus à la textbox
loop    


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 10-02-2010 à 08:30:15    

Bonjour OtObOx,
 
Merci pour ta réponse, en fait vu le code que tu me proposes, tu as tout à fait compris mon problème.
Notamment sur la ligne suivante:
 
textbox.setfocus 'Redonne le focus à la textbox  
 
Mais malgrès tout je n'arrive pas à retourner sur cette textbox! Quand je clique sur la MsgBox, la userform prècedente se ferme également.
 
Comment puis-je y remédier?
 
Par contre dans les conditions j'ai utlisé Select case
 
Code:
 
Select Case Textbox
 
'1ère condition'
Case Is = " "
 msgbox "Veuillez saisir un texte" et donc pas moyen de retourner sur la userform en quittant la MsgBox (Ou setfocus sur Userform.TextBox)
 
 
Case Is <> " "  
 'ici test si la valeur de la TextBox appartient à la liste'  
  For a=1 to z
   '2ème Condition'
   If TextBox="ma liste" then
    MsgBox "Le texte existe déjà" idem pas moyen de retourner sur la userform
    Exit For
   End If  
 Next a
 
 '3ème Condition'
Si condition 1 et 2 sont fausse alors on passe à l'évenement 3
 
Je vais essayer d'adapter mon projet avec ton code. Je te tiens au courant. Merci
 
 

Reply

Marsh Posté le 10-02-2010 à 18:53:01    

As tu remarqué le do...loop où tu sors uniquement quand la 3e condition est vraie ? Sinon, en quittant la message box, tu retombes sur le loop qui te ramène en début de choix.
Or, je ne vois pas cette boucle dans ton code.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 21-04-2010 à 08:23:25    

Bonjour. Je viens de trouver la solution à mon problème concernant la gestion des MsgBox. En effet, mon souci était de pouvoir éditer (modifier les données) via une Userform. La difficulté était de gérér le comportement de ces MsgBox en fonction des valeurs existantes. Voilà le code.
 


Private Sub CommandButton1_Click()
'Modification du Prix'
Dim i As Byte
Dim z As Byte
Dim j As String
Dim a As Byte
 
 
     
    'Dernière cellule non vide colonne A'
    z = Range("A1" ).End(xlDown).Row - 1
 
    'Etendu des cellules
    For i = 1 To z
 
        'Incrémentation Cellules'
        j = Range("A1" ).Offset(i, 0)
                   
            If MaUserform.MaComboBox = j Then
                                         
                Select Case MaTextBox
                 Case Is = "" 'Cas ou MaTextbox est vide'
                     
    MsgBox "Concerve les valeurs"
                     
                      'Ferme MaUserform'
                      Unload MaUserform
   
                 Case Is <> "" 'Cas ou MaTextbox est non vide'
                     
                      'Cas ou le code tapé dans MaTextbox existe déjà'
                      For a = 1 To z
                          Do While MaTextBox = Range("A1" ).Offset(a, 0)
                               MsgBox "Le code " & Range("A1" ).Offset(a, 0) & " existe déjà" & vbLf & "Veuillez en saisir un autre!"
                               TextBox4.Value = ""
                               TextBox4.SetFocus
                               Exit Sub
                          Loop
                      Next a
                     
                      'Cas ou le code tapé dans MaTextbox est nouveau'
                     
                      'Changement de nom de l'onglet'
                      Sheets(i).Name = MaTextBox
                     
                                     
                      'Ferme MaUserform'
               Unload MaUserform
                     
                End Select
            End If
    Next i
 
End Sub


 
Merci encore à toi OtObOx de m'avoir mis la puce à l'oreille.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed