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
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.