Vérification de plusieurs textbox avant de continuer la macro

Bonjour,

J'ai plusieurs textbox à verifier avant l'insertion dans ma feuille.

Pensez-vous qu'il y ai moyen de simplifier ce code? si oui, cela m’intéresse de connaitre la solution

j'ai bien vu d'autres solution sur le forum, mais alors je dois rétablir mes textbox, avec leur nom d'origine (textbox1, textbox2, ...)

Private Sub CommandButton_valider_Click()
With ActiveSheet
ligne = .Range("A65536").End(xlUp).Row + 1

If Me.TextBox_nom = "" Then
    Label3.Font.Bold = True
    Label3.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_prenom = "" Then
    Label6.Font.Bold = True
    Label6.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_prenom = "" Then
    Label6.Font.Bold = True
    Label6.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_mail = "" Then
    Label15.Font.Bold = True
    Label15.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_ad1 = "" Then
  Label7.Font.Bold = True
    Label7.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_cp1 = "" Then
  Label8.Font.Bold = True
    Label8.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_ville1 = "" Then
  Label9.Font.Bold = True
    Label9.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If
If Me.TextBox_pays1 = "" Then
  Label10.Font.Bold = True
    Label10.ForeColor = RGB(255, 0, 0)
    MsgBox "Veuillez renseigner les champs obligatoires (*)"
Exit Sub
End If

    .Cells(ligne, 1) = TextBox_numclient
    .Cells(ligne, 2) = TextBox_nom.Value
    .Cells(ligne, 3) = TextBox_prenom.Value
    .Cells(ligne, 18) = TextBox_mail.Value
    .Cells(ligne, 17) = TextBox_annif.Value
    .Cells(ligne, 16) = TextBox_phone.Value
    .Cells(ligne, 5) = TextBox_societe.Value
    .Cells(ligne, 6) = TextBox_ad1.Value
    .Cells(ligne, 7) = TextBox_cp1.Value
    .Cells(ligne, 8) = TextBox_ville1.Value
    .Cells(ligne, 9) = TextBox_pays1.Value
    .Cells(ligne, 11) = TextBox_ad2.Value
    .Cells(ligne, 12) = TextBox_cp2.Value
    .Cells(ligne, 13) = TextBox_ville2.Value
    .Cells(ligne, 14) = TextBox_pays2.Value
    .Cells(ligne, 19) = TextBox_infos.Value
End With
Unload Me
End Sub

bonjour,

Moi je pratique comme ça :

Les TextBox ont une propriété Tag :

Sélectionner tous les TextBox qui ont une astérisque puis inscrire dans le Tag : fill

Ensuite diviser ta Sub en 3 comme indiqué :

Private Sub CommandButton_valider_Click()
   If Not IsOKTxtBx Then
      MsgBox "Veuillez renseigner les champs obligatoires (*)"
      Exit Sub
   End If
WriteRecord
End Sub
Private Function IsOKTxtBx() As Boolean
' Contrôle si tous les TextBox obligatoires sont remplis
Dim Ctrl As Control
IsOKTxtBx = True
   For Each Ctrl In Me.Controls
      If TypeOf Ctrl Is MSForms.TextBox Then
         If LCase(Ctrl.Tag) = "fill" And Len(Trim(Ctrl.Value)) = 0 Then
            Ctrl.SetFocus
            IsOKTxtBx = False
            Exit Function
         End If
   End If
   Next Ctrl
End Function
Private Sub WriteRecord()
   With ActiveSheet
   ligne = .Range("A65536").End(xlUp).Row + 1
       .Cells(ligne, 1) = TextBox_numclient
       .Cells(ligne, 2) = TextBox_nom.Value
       .Cells(ligne, 3) = TextBox_prenom.Value
       .Cells(ligne, 18) = TextBox_mail.Value
       .Cells(ligne, 17) = TextBox_annif.Value
       .Cells(ligne, 16) = TextBox_phone.Value
       .Cells(ligne, 5) = TextBox_societe.Value
       .Cells(ligne, 6) = TextBox_ad1.Value
       .Cells(ligne, 7) = TextBox_cp1.Value
       .Cells(ligne, 8) = TextBox_ville1.Value
       .Cells(ligne, 9) = TextBox_pays1.Value
       .Cells(ligne, 11) = TextBox_ad2.Value
       .Cells(ligne, 12) = TextBox_cp2.Value
       .Cells(ligne, 13) = TextBox_ville2.Value
       .Cells(ligne, 14) = TextBox_pays2.Value
       .Cells(ligne, 19) = TextBox_infos.Value
   End With
Unload Me
End Sub

Nota : Tu ne respectes pas les conventions usuelles de nommage des contrôles

tbNumCli

tbNom

tbPren

tbMail

...est tout aussi compréhensible. Quand au Value, Il est rarement indispensable : Tu peux t'en passer !

A+

Bonsoir galopin01,

Je te remercie pour ce code

En effet bcp plus facile à mettre en place et plus épuré.

je ne connaissais pas ce "tag", eh bien voilà chose faite

en revanche, qu'entends-tu par:

(désolé, mais comme tu as pu le remarquer, je suis encore très novice en programmation vba )

Nota : Tu ne respectes pas les conventions usuelles de nommage des contrôles

tbNumCli

tbNom

tbPren

tbMail

...est tout aussi compréhensible. Quand au Value, Il est rarement indispensable : Tu peux t'en passer !

ça serait de remplacer:

.Cells(ligne, 1) = TextBox_nom.Value

par

.Cells(ligne, 1) = tbNom

c'est effectivement plus court, mais il ne me copie pas les infos!

C'est pas tout de remplacer le code :

Encore faut-il que les contrôles soit renommés dès le départ avec ces noms.

Les exemples que je donne ne sont que ...des exemples :

Ce qu'il faut retenir ces l'idée générale : un préfixe de 2 ou 3 lettre qui caractérise l'objet + Un nom court commençant par une majuscule qui identifie le contrôle lui-même.

Eviter les noms d'objet ou de variables à plus de 10 caractères : Ça ne fait que rendre le code plus compliqué à lire...

A+

bonjour Galopin,

désoler de revenir vers toi aussi tard

alors javais bien compris , si il ne faisait pas la copie des données, c'est parce que j'avais fais une erreur de frappe.

Merci quand même pour ton explication.

Bonjour

donne au moins un modèle pour voir car je pense que tu a un problème de structure

A+

Maurice

Bonjour archer,

Je te remercie, mais le code de galopin m'a permis de résoudre mon problème.

Peut-être à une prochaine, je te souhaite une bonne journée.

Rechercher des sujets similaires à "verification textbox continuer macro"