-1 - Réalisons d’abord le formulaire VB suivant :
-2 – Puis affectons la macro OpenForm() à un bouton de commande « Annuler » de la feuille de calcul pour ouvrir le formulaire. Le code a été saisi dans une feuille de module de code (Module 1)
Sub OpenForm()
'Rendre toutes les zones vide
FormTest.TextBox1.Text = ""
FormTest.erreur1.Caption = ""
FormTest.TextBox2.Text = ""
FormTest.erreur2.Caption = ""
FormTest.TextBox3.Text = ""
FormTest.erreur3.Caption = ""
FormTest.TextBox4.Text = ""
FormTest.erreur4.Caption = ""
FormTest.TextBox5.Text = ""
FormTest.TextBox6.Text = ""
FormTest.erreur6.Caption = ""
'avant l'ouverture du formulaire
FormTest.Show
End Sub
'Rendre toutes les zones vide
FormTest.TextBox1.Text = ""
FormTest.erreur1.Caption = ""
FormTest.TextBox2.Text = ""
FormTest.erreur2.Caption = ""
FormTest.TextBox3.Text = ""
FormTest.erreur3.Caption = ""
FormTest.TextBox4.Text = ""
FormTest.erreur4.Caption = ""
FormTest.TextBox5.Text = ""
FormTest.TextBox6.Text = ""
FormTest.erreur6.Caption = ""
'avant l'ouverture du formulaire
FormTest.Show
End Sub
-3 – Programmons maintenant par sécurité le bouton de commande SORTIR du formulaire
Private Sub Sortir_Click()
'Fermons le formulaire en cas de click sur le bouton Annuler
FormTest.Hide
End Sub
'Fermons le formulaire en cas de click sur le bouton Annuler
FormTest.Hide
End Sub
- 4 – Premier contrôle très simple pour savoir si l’utilisateur a bien renseigné ce textbox.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'L'événement Exit se déclenche lorsque le focus sort de la zone de texte
If TextBox1.Text = "" Then
erreur1.Caption = "Vous n'avez pas rempli ce champ"
'Un simple message pour attirer l'attention de l'utilisateur
Else
erreur1.Caption = ""
End If
End Sub
'L'événement Exit se déclenche lorsque le focus sort de la zone de texte
If TextBox1.Text = "" Then
erreur1.Caption = "Vous n'avez pas rempli ce champ"
'Un simple message pour attirer l'attention de l'utilisateur
Else
erreur1.Caption = ""
End If
End Sub
-5 – Convertissons maintenant une saisie en MAJUSCULE
Private Sub TextBox2_Change()
'L'événement Change se déclenche lorsque la valeur de la zone de texte est modifiée
TextBox2.Text = UCase(TextBox2.Text)
'ou LCase() pour mettre en minuscule
erreur2.Caption = "Conversion réussie"
End Sub
'L'événement Change se déclenche lorsque la valeur de la zone de texte est modifiée
TextBox2.Text = UCase(TextBox2.Text)
'ou LCase() pour mettre en minuscule
erreur2.Caption = "Conversion réussie"
End Sub
If Len(TextBox3.Text) = 5 Then
'Len() retourne la longueur d'une chaîne de texte
erreur3.Caption = "Cette zone contient bien 5 caractères"
Else
erreur3.Caption = "Cette zone ne contient pas 5 caractères mais " _
& Len(TextBox3.Text) & "caractère(s)"
End If
End Sub
- 7 – Vérifions que la saisie est bien de type texte et qu’il ne s’agit pas d’un nombre ou d’une date.
If IsNumeric(TextBox4.Text) Or IsDate(TextBox4.Text) Then
'isNumeric() et isDate() renvoie VRAI si la zone contient un nombre ou une date
erreur4.Caption = "Ceci n'est pas un texte"
Else
erreur4.Caption = "Ceci est un texte"
End If
End Sub
- 8 – Associons dans la même procédure les 4 contrôles précédents
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox5.Text = "" Or Len(TextBox5.Text) <> 5 _
Or IsNumeric(TextBox5.Text) Or IsDate(TextBox5.Text) Then
MsgBox "Veuillez remplir cette zone avec" _
& Chr(10) & "un texte de 5 caractères"
'Chr() simule un touche clavier ici le retour ligne
Else
TextBox5.Text = UCase(TextBox5)
MsgBox "Ceci est un texte de 5 caractères" _
& Chr(10) & "converti en majuscule"
End If
End Sub
If TextBox5.Text = "" Or Len(TextBox5.Text) <> 5 _
Or IsNumeric(TextBox5.Text) Or IsDate(TextBox5.Text) Then
MsgBox "Veuillez remplir cette zone avec" _
& Chr(10) & "un texte de 5 caractères"
'Chr() simule un touche clavier ici le retour ligne
Else
TextBox5.Text = UCase(TextBox5)
MsgBox "Ceci est un texte de 5 caractères" _
& Chr(10) & "converti en majuscule"
End If
End Sub
- 9 – Dernier exemple, vérifions si une chaîne 1 est comprise dans une chaîne 2, ici nous voulons savoir si la valeur 1 ou 2 se trouve en première position de la saisie
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If InStr(1, TextBox6.Text, 1) Or InStr(1, TextBox6.Text, 2) Then
'InStr(départ, chaîne, comparaison) permet de savoir si comparaison est présent
' dans chaîne à partir de la position départ
erreur6.Caption = "La saisie commence par le chiffre 1 ou 2"
Else
erreur6.Caption = "La saisie ne commence pas par le chiffre 1 ou 2"
End If
End Sub
If InStr(1, TextBox6.Text, 1) Or InStr(1, TextBox6.Text, 2) Then
'InStr(départ, chaîne, comparaison) permet de savoir si comparaison est présent
' dans chaîne à partir de la position départ
erreur6.Caption = "La saisie commence par le chiffre 1 ou 2"
Else
erreur6.Caption = "La saisie ne commence pas par le chiffre 1 ou 2"
End If
End Sub
2 commentaires:
Merci pour tous ses exemples
très instructif.
Enregistrer un commentaire