Userform - Vérifier Remplissage des TextBox

Bonjour à tous,

Me revoilà avec une nouvelle question.. Cette fois-ci j'aurais besoin de vous pour m'aider à simplifier une macro.

Étant débutant en VBA je suis encore très très loin de connaître tous les trucs et astuces.

J'ai tenté d'écrire une macro ayant pour fonction de renvoyer un MsgBox si une ou plusieurs TextBox de mon formulaire ne sont pas remplies. Seulement comme je débute, j'ai l'impression d'avoir fait quelque chose de totalement archaïque et je suis persuadé qu'il y a moyen de faire plus simple, avec une bouche While ou autre.. Le problème est que je ne comprends pas vraiment la syntaxe a adopter pour simplifier tout ça.

Pour résumer, j'aimerais que lorsque je clique sur le bouton Valider de mon formulaire (CommandButton1), mes Textbox soient vérifier et avoir ensuite un "SetFocus" sur ma première Textbox non remplie (ça je ne sais pas vraiment comment l'écrire)

Voilà le code sur lequel je suis parti (Seule la partie "IF" est à revoir, le reste me sert à reporter les données saisies de mon formulaire à ma base de données) :

Private Sub CommandButton1_Click()

Dim ctrl As Control
Dim Colonne As Integer
Dim derligne As Integer

If Len(Me.TextBox15) Or Len(Me.TextBox8) Or Len(Me.TextBox9) Or Len(Me.TextBox10) Or Len(Me.TextBox11) Or Len(Me.TextBox13) Or Len(Me.TextBox18) Or Len(Me.TextBox19) Or Len(Me.TextBox14) = 0 Then

MsgBox "Seul le champ complément d'adresse peut rester vide. Merci de remplir les autres."

    If Len(TextBox15) = 0 Then 'NOM
    TextBox15.SetFocus
    End If
        If Len(TextBox8) = 0 Then 'Prénom
        TextBox8.SetFocus
        End If
            If Len(TextBox9) = 0 Then 'Date de naissance
            TextBox9.SetFocus
            End If
                If Len(TextBox10) = 0 Then 'Lieu de naissance
                TextBox10.SetFocus
                End If
                    If Len(TextBox11) = 0 Then 'Nationnalité
                    TextBox11.SetFocus
                    End If
                        If Len(TextBox13) = 0 Then 'Adresse
                        TextBox13.SetFocus
                        End If
                            If Len(TextBox18) = 0 Then 'Code Postal
                            TextBox18.SetFocus
                            End If
                                If Len(TextBox19) = 0 Then 'Ville
                                TextBox19.SetFocus
                                End If
                                    If Len(TextBox14) = 0 Then 'N° de SS
                                    TextBox14.SetFocus
                                    End If

Cancel = True
Else

derligne = Sheets("Données perso Interimaires").Range("C65000").End(xlUp).Row + 1

For Each ctrl In Userform1.Controls

Colonne = Val(ctrl.Tag)

If Colonne > 0 Then Sheets("Données perso Interimaires").Cells(derligne, Colonne) = ctrl: 'rempli la liste intérimaire
Sheets("Données perso Interimaires").Range("A2:L1000").Sort Key1:=Range("A2"), Order1:=xlAscending 'trie la liste par ordre alpha

Next
End
End If
End Sub

Je fais donc appel aux experts en VBA qui sauront sans doute m'aider à faire plus simple.. Et qui auront sans doute sauter au plafond en voyant tout ça

D'avance merci !!

PS : Existe-t-il une fonction qui voudrait dire "Et/Ou" en VBA ? Ou alors c'est la fonction le "Ou" est-il déjà inclusif ?

EDIT : Je me suis aperçu après envoi que le code dépasse sur le forum, y'a-t-il un moyen pour qu'il apparaisse en entier ?

Bonjour

voila une routine

mettre dans les textBox.Tag ="O"

   For L = 2 To 20
      If Controls("Textbox" & L).Value = "" And Controls("Textbox" & L).Tag = "O" Then
         MsgBox "Champs Obligatoire", , "Alerte"
             Controls("Textbox" & L).SetFocus
          Exit Sub
      End If
   Next

A+

Maurice

Bonsoir,

Le fichier permettrait d'opérer les rectifications nécessaires... !

Cordialement.

Bonjour tout le monde ! Bonjour Archer, Bonjour MFerrand.

Désolé de ne pas vous avoir répondu plus tôt, j'étais en congé.

Archer, merci pour cette proposition, je vais la tester de suite ! Effectivement ça a l'air beaucoup plus simple que ce que j'avais écris ahah

MFerrand, effectivement avec le fichier c'aurait été mieux, mais il s'agit d'un fichier assez lourd sur lequel se trouvent plein d'infos confidentiel et je n'étais pas sûr de pouvoir l'anonymiser sans tout planter...

Merci encore pour vos réponses, je reviens vers vous pour vous dire si tout est ok !

Bonne journée

Rechercher des sujets similaires à "userform verifier remplissage textbox"