Control d'un champ

Le
dyj Orange
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control ou
code dois je associer pour m'assurer que j'ai bien 2 champs alphabétiques
(éventuellement un tiret) et un champ numérique (Tel).
Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #22464921
bonjour dyj,

exemple pour controler le textbox telephone (format: 111-111-1111),
l'utilisateur n'a qu'à inscrire les chiffres, les tirets s'inscrive tout seul.

Private Sub TextBox1_Change()
Dim Valeur As Byte
TextBox1.MaxLength = 12 'nb caractères maxi autorisé dans le textbox
Valeur = Len(TextBox1)
If Valeur = 3 Or Valeur = 7 Then TextBox1 = TextBox1 & "-"
End Sub


'vérifier la saisie saisie
Private Sub CommandButton1_Click() 'bouton de validation
TextBox2 = ""
For i = 1 To 12
Select Case i
Case 4, 8:
If Not Mid(TextBox1, i, 1) = "-" Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
Case Else:
If Not IsNumeric(Mid(TextBox1, i, 1)) Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
End Select
Next
TextBox2 = TextBox1
End Sub

isabelle

Le 2010-08-12 08:09, dyj Orange a écrit :
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control
ou code dois je associer pour m'assurer que j'ai bien 2 champs
alphabétiques (éventuellement un tiret) et un champ numérique (Tel).
Merci.
dyj Orange
Le #22465141
Merci. Pour les chiffres Ok, mais pour les caractères alpha ou - je ne
comprends pas le Select et les Case. Peux tu me donner quelques
explications.
Merci pour ton aide

"isabelle" i4129l$vg1$
bonjour dyj,

exemple pour controler le textbox telephone (format: 111-111-1111),
l'utilisateur n'a qu'à inscrire les chiffres, les tirets s'inscrive tout
seul.

Private Sub TextBox1_Change()
Dim Valeur As Byte
TextBox1.MaxLength = 12 'nb caractères maxi autorisé dans le textbox
Valeur = Len(TextBox1)
If Valeur = 3 Or Valeur = 7 Then TextBox1 = TextBox1 & "-"
End Sub


'vérifier la saisie saisie
Private Sub CommandButton1_Click() 'bouton de validation
TextBox2 = ""
For i = 1 To 12
Select Case i
Case 4, 8:
If Not Mid(TextBox1, i, 1) = "-" Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
Case Else:
If Not IsNumeric(Mid(TextBox1, i, 1)) Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
End Select
Next
TextBox2 = TextBox1
End Sub

isabelle

Le 2010-08-12 08:09, dyj Orange a écrit :
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control
ou code dois je associer pour m'assurer que j'ai bien 2 champs
alphabétiques (éventuellement un tiret) et un champ numérique (Tel).
Merci.
isabelle
Le #22466521
bonjour dyj,

le principe est une boucle sur chaque caractère du contenu du textbox
dans cette exemple (111-111-1111) il y a 12 caractères
'
For i = 1 To 12 ' pour le caractère 1 à 12
Select Case i
Case 4, 8: ' si le numéro de caractère est 4ème ou le 8ème
If Not Mid(TextBox1, i, 1) = "-" Then 'si celui-ci est egal à "-" passe à l'autre caractères (End select, Next), sinon...

Case Else: pour tous les autres numéro de caractère,
If Not IsNumeric(Mid(TextBox1, i, 1)) Then 's'il est numérique passe au caractère suivant (End select, Next), sinon...

isabelle

Le 2010-08-12 12:18, dyj Orange a écrit :
Merci. Pour les chiffres Ok, mais pour les caractères alpha ou - je ne
comprends pas le Select et les Case. Peux tu me donner quelques
explications.
Merci pour ton aide

"isabelle" i4129l$vg1$
bonjour dyj,

exemple pour controler le textbox telephone (format: 111-111-1111),
l'utilisateur n'a qu'à inscrire les chiffres, les tirets s'inscrive
tout seul.

Private Sub TextBox1_Change()
Dim Valeur As Byte
TextBox1.MaxLength = 12 'nb caractères maxi autorisé dans le textbox
Valeur = Len(TextBox1)
If Valeur = 3 Or Valeur = 7 Then TextBox1 = TextBox1 & "-"
End Sub


'vérifier la saisie saisie
Private Sub CommandButton1_Click() 'bouton de validation
TextBox2 = ""
For i = 1 To 12
Select Case i
Case 4, 8:
If Not Mid(TextBox1, i, 1) = "-" Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
Case Else:
If Not IsNumeric(Mid(TextBox1, i, 1)) Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
End Select
Next
TextBox2 = TextBox1
End Sub

isabelle

Le 2010-08-12 08:09, dyj Orange a écrit :
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control
ou code dois je associer pour m'assurer que j'ai bien 2 champs
alphabétiques (éventuellement un tiret) et un champ numérique (Tel).
Merci.





dyj Orange
Le #22466671
Merci. Alors quelle méthode pour s'assurer qu'un champ ne contient que des
caractères alphabétique, exemple pour vérifier le nom de famille.
Mes questions sont peut être naïves, mais j'apprends tous les jours à
travers vos réponses.

"isabelle" i427hj$12d$
bonjour dyj,

le principe est une boucle sur chaque caractère du contenu du textbox
dans cette exemple (111-111-1111) il y a 12 caractères
'
For i = 1 To 12 ' pour le caractère 1 à 12
Select Case i
Case 4, 8: ' si le numéro de caractère est 4ème ou le 8ème
If Not Mid(TextBox1, i, 1) = "-" Then 'si celui-ci est egal à "-"
passe à l'autre caractères (End select, Next), sinon...

Case Else: pour tous les autres numéro de caractère,
If Not IsNumeric(Mid(TextBox1, i, 1)) Then 's'il est numérique passe
au caractère suivant (End select, Next), sinon...

isabelle

Le 2010-08-12 12:18, dyj Orange a écrit :
Merci. Pour les chiffres Ok, mais pour les caractères alpha ou - je ne
comprends pas le Select et les Case. Peux tu me donner quelques
explications.
Merci pour ton aide

"isabelle" i4129l$vg1$
bonjour dyj,

exemple pour controler le textbox telephone (format: 111-111-1111),
l'utilisateur n'a qu'à inscrire les chiffres, les tirets s'inscrive
tout seul.

Private Sub TextBox1_Change()
Dim Valeur As Byte
TextBox1.MaxLength = 12 'nb caractères maxi autorisé dans le textbox
Valeur = Len(TextBox1)
If Valeur = 3 Or Valeur = 7 Then TextBox1 = TextBox1 & "-"
End Sub


'vérifier la saisie saisie
Private Sub CommandButton1_Click() 'bouton de validation
TextBox2 = ""
For i = 1 To 12
Select Case i
Case 4, 8:
If Not Mid(TextBox1, i, 1) = "-" Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
Case Else:
If Not IsNumeric(Mid(TextBox1, i, 1)) Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
End If
End Select
Next
TextBox2 = TextBox1
End Sub

isabelle

Le 2010-08-12 08:09, dyj Orange a écrit :
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control
ou code dois je associer pour m'assurer que j'ai bien 2 champs
alphabétiques (éventuellement un tiret) et un champ numérique (Tel).
Merci.





LSteph
Le #22467251
Bonjour,

Private Sub TextBox1_Change()
For i = 1 To Len(TextBox1)
If (InStr(" -,abcdefgh'ijklmnopqrstuvwxyz", LCase(Mid(TextBox1, i,
1)))) = 0 Then
TextBox1 = ""
TextBox1.SetFocus: MsgBox "vous devez entrer des lettres pour un nom "
End If
Next
End Sub
Private Sub TextBox2_Change()
For i = 1 To Len(TextBox2)
If (InStr(" -,abcdefgh'ijklmnopqrstuvwxyz", LCase(Mid(TextBox2, i,
1)))) = 0 Then
TextBox2 = ""
MsgBox "vous devez entrer des lettres pour un prénom "
TextBox2.SetFocus
End If
Next
End Sub
Private Sub TextBox3_Change()
For i = 1 To Len(TextBox3)
If (InStr(" -0123456789", LCase(Mid(TextBox3, i, 1)))) = 0 Then
TextBox3 = ""
MsgBox "vous devez entrer un numéro pour un téléphone"
TextBox3.SetFocus
End If
Next
End Sub

'LSteph

On 12 août, 14:09, "dyj Orange"
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control ou
code dois je associer pour m'assurer que j'ai bien 2 champs alphabétiqu es
(éventuellement un tiret) et un champ numérique (Tel).
Merci.
LSteph
Le #22467241
Bonjour,

Private Sub TextBox1_Change()
For i = 1 To Len(TextBox1)
If (InStr(" -,abcdefgh'ijklmnopqrstuvwxyz", LCase(Mid(TextBox1, i,
1)))) = 0 Then
TextBox1 = ""
TextBox1.SetFocus: MsgBox "vous devez entrer des lettres pour un nom "
End If
Next
End Sub
Private Sub TextBox2_Change()
For i = 1 To Len(TextBox2)
If (InStr(" -,abcdefgh'ijklmnopqrstuvwxyz", LCase(Mid(TextBox2, i,
1)))) = 0 Then
TextBox2 = ""
MsgBox "vous devez entrer des lettres pour un prénom "
TextBox2.SetFocus
End If
Next
End Sub
Private Sub TextBox3_Change()
For i = 1 To Len(TextBox3)
If (InStr(" -0123456789", LCase(Mid(TextBox3, i, 1)))) = 0 Then
TextBox3 = ""
MsgBox "vous devez entrer un numéro pour un téléphone"
TextBox3.SetFocus
End If
Next
End Sub

'LSteph

On 12 août, 14:09, "dyj Orange"
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control ou
code dois je associer pour m'assurer que j'ai bien 2 champs alphabétiqu es
(éventuellement un tiret) et un champ numérique (Tel).
Merci.
dyj Orange
Le #22467311
Merci, c'est exactement adapté à mon besoin. Par contre en terme d'écriture
lorsqu'on a beaucoup de TextBox peut on les écrire avec indice que l'on
ferait varier dans une boucle: For i=1 to 25: TestBox(i)=.. : Next i
michdenis
Le #22467411
Bonjour,

Une façon simple de procéder :

Exemple pour ne permettre que les caractères que l'on désire dans un textbox.

Caractère 32 = Barre d'espacement
Caractère 39 = Apostrophe
Caractère 45 = Trait d'union
Caractères 65 à 90 = Lettre de l'alphabet de A à Z
Caractères 97 à 122 = Lettre de l'alphabet de a à z
Selon le clavier utilisé, il faudrait ajouter les caractères ASCII nécessaire
pour les ACCENTS possibles sur certaines lettres. En fait, tu ajoutes tous
les caractères (leur valeur Ascii) que tu désires.

'-----------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 32, 39, 45, 65 To 90, 97 To 122
Case Else
KeyAscii = 0
End Select
End Sub
'-----------------------------

Exemple pour ne permettre que les caractères numériques dans un textbox
'---------------------------------
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
'---------------------------------

--
MichD
--------------------------------------------


"dyj Orange" 4c63e472$0$5395$
Bonjour,
En VBA dans un Userform, j'ai 3 TextBox: nom, prénom, tel. Quel control ou
code dois je associer pour m'assurer que j'ai bien 2 champs alphabétiques
(éventuellement un tiret) et un champ numérique (Tel).
Merci.
LSteph
Le #22467741
Bonjour,
Dans ce cas précis non puisque le traitement de chaque textbox peut-
être différent
Si tu as tantôt des noms des chiffres des codes...
Sinon tu pourrais créer un module de classe et généraliser
l'évennement pour l'ensemble des textbox reste q'un SelectCase devra
ensuite affiner le choix des chr pour chaque textbox.Donc c'est aussi
simple comme on a fait

En outre regarde aussi la proposition de MD,
Cela va plus vite d'écrire un caractère que son code mais sa
suggestion devient plus intéressante quand on peut traiter une série
consécutive de caractères car il suffit de s'en servir comme bornes.

Reste que l'evennement Keypress ne sera pas appliqué au texte collé,
dommage..

@+

--
LSteph

On 13 août, 11:54, "dyj Orange"
Merci, c'est exactement adapté à mon besoin. Par contre en terme d' écriture
lorsqu'on a beaucoup de TextBox peut on les écrire avec indice que l'on
ferait varier dans une boucle: For i=1 to 25: TestBox(i)=.. : Next i
Publicité
Poster une réponse
Anonyme