Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

renvois vers textbox vide

  • Initiateur de la discussion Initiateur de la discussion charette63
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

charette63

XLDnaute Occasionnel
Bonjours à toutes et à tous,

C'est encore moi, plus j'avance dans l'elaboration de mon fichier plus je rencontre des petits problèmes insoluble pour moi.

J'ai reçu, via ce site, un code qui m’empêche d'activer une macro si tous les textbox d'un userform ne sont pas rempli:

Code:
Sub ValiderUSF2()

Dim ctl As Control
For Each ctl In UserForm2.Controls
  If TypeName(ctl) = "TextBox" Then
    If ctl.Value = "" Then
      MsgBox "Vous devez remplir tous les champs !"
      Exit Sub
    End If
  End If
Next ctl

'Ton code ici, qui sera executé si et seulement si toutes les textbox sont remplis.
End Sub

Le code fonctionne trés bien, mais maintenant cette macro est activée via un "commandbutton"et qui active d'autres actions:

Code:
Private Sub CommandButton4_Click()
'Valider
Call ValiderUSF2
Unload UserForm2
Unload UserForm1
'ActiveWorkbook.Save
UserForm5.Show
End Sub

Avant l'application de ce "commandbutton", lorsque tous les textbox n'étaient pas remplis, le msgbox apparaissait, je cliquais "ok" et la userform restait active. Il ne me restais plus qu'à compléter mon oubli.
Maintenant, dans la même situation, l'action du "commandbutton" suit son petit bonhomme de chemin, me ferme mon userform2 et m'ouvre mon userform5 sans que je ne puisse compléter mon userform2.

Je cherche donc une possibilité de me renvoyer dans le textbox vide de ma userform2
Peut etre une ligne de commande supplémentaire dans ce code:

Code:
Dim ctl As Control
For Each ctl In UserForm2.Controls
  If TypeName(ctl) = "TextBox" Then
    If ctl.Value = "" Then
      MsgBox "Vous devez remplir tous les champs !"
      Exit Sub
    End If
  End If
Next ctl

merci

cordialement

Thierry
 
Re : renvois vers textbox vide

bonjour charette63
peut être un "truc" dans ce genre variable x en debut de module

Code:
Option Explicit
Dim ctl As Control, x As Boolean
Private Sub CommandButton4_Click()
 Call ValiderUSF2
If x = False Then Exit Sub
Unload UserForm2
Unload UserForm1
ActiveWorkbook.Save
UserForm5.Show
End Sub

Sub ValiderUSF2()
x = True
For Each ctl In UserForm2.Controls
  If TypeName(ctl) = "TextBox" Then
    If ctl.Value = "" Then
      MsgBox "Vous devez remplir tous les champs !"
        x = False
      Exit Sub
    End If
  End If
Next ctl
End Sub
 
Re : renvois vers textbox vide

Bonjour charette63, salut Laetitia,

J'ai testé ceci qui paraît convenir :

Code:
Private Sub CommandButton4_Click()
Call ValiderUSF2
Unload UserForm2
Unload UserForm1
ActiveWorkbook.Save
UserForm5.Show
End Sub

Sub ValiderUSF2()
Dim ctl As Control
For Each ctl In UserForm2.Controls
  If TypeName(ctl) = "TextBox" Then
    If ctl.Value = "" Then
      ctl.SetFocus 'curseur dans la TextBox
      MsgBox "Vous devez remplir tous les champs !"
      UserForm2.Hide
      UserForm2.Show
      End
    End If
  End If
Next ctl
End Sub
A noter : on peut fermer USF2 même si les TextBox ne sont pas remplies...

Si ça ne convient pas, il faut alors empêcher la fermeture dans une macro QueryClose.

Edit : j'utilise l'instruction End, autrement le code suivant s'exécutera plusieurs fois.

A+
 
Dernière édition:
Re : renvois vers textbox vide

Bonsoir,

si tu n'as pas besoin de contrôler les contenus vides plusieurs fois, tu peux te contenter d'une seule macro :
Code:
Private Sub CommandButton4_Click()
    Dim ctl As Control
    For Each ctl In UserForm2.Controls
        If TypeName(ctl) = "TextBox" Then
            If ctl.Value = "" Then
                MsgBox "Vous devez remplir tous les champs !"
                ctl.SetFocus
                Exit Sub
            End If
        End If
    Next ctl
    Unload UserForm2
    Unload UserForm1
    ActiveWorkbook.Save
    UserForm5.Show
End Sub
 
Re : renvois vers textbox vide

Bonjour Fo_rum,

si tu n'as pas besoin de contrôler les contenus vides plusieurs fois, tu peux te contenter d'une seule macro :

Bien d'accord avec toi. Le seul intérêt d'avoir 2 macros c'est de pouvoir appeler la macro Valider USF2 autrement, par exemple, comme je l'ai suggéré, depuis une QueryClose.

A+
 
bonjour à toutes et tous,

le code de job75 fonctionne à merveille.

Le choix d'installer deux macros n'est utile que pour une "mise en page" dans le(s) module(s).

Laetitia90, Job75 et Fo_rum, merci beaucoup

cordialement

Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
267
Réponses
3
Affichages
353
Réponses
3
Affichages
834
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…