Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Controle format dans TextBox

10 réponses
Avatar
JPMonnier
Bonjour,
Excel 2000
Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private Sub
suivante

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)

n'autoriser qu'une valeur numérique de 10 chiffres
puis suivi d'un Setfocus si le TextBox ne rempli pas cette condition
Merci d'avance

--
Cordialement
jpmonnier-nospam@neuf.fr

10 réponses

Avatar
Caetera
"JPMonnier" a écrit dans le message de news:

Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private Sub
n'autoriser qu'une valeur numérique de 10 chiffres



Un test sur la valeur numerique ET un test sur la longueur de la chaine :
if isnumeric(...) and len(...) then....

Etc
Avatar
JPMonnier
Bonjour Caetera
Merci c'est Ok, mais mon SetFocus ne fonctionne pas, il me renvoie bien mon
Msgbox de mauvaise saisie
voici mon test sans contrôler la longueur

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TTelF.Value) = False Then
MsgBox "Num obligatoire"
TTelF.SetFocus
Exit Sub
End If
End Sub
Merci
--
Cordialement

"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de
news:%
"JPMonnier" a écrit dans le message de news:

Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private
Sub n'autoriser qu'une valeur numérique de 10 chiffres



Un test sur la valeur numerique ET un test sur la longueur de la chaine :
if isnumeric(...) and len(...) then....

Etc



Avatar
garnote
Bonjour,

Alors, peut-être ceci :
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox2.Value) Or Len(TextBox2.Value) <> 10 Then
Cancel = True
TextBox2.SetFocus
End If
End Sub

Serge


"JPMonnier" a écrit dans le message de news:

Bonjour Caetera
Merci c'est Ok, mais mon SetFocus ne fonctionne pas, il me renvoie bien
mon Msgbox de mauvaise saisie
voici mon test sans contrôler la longueur

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TTelF.Value) = False Then
MsgBox "Num obligatoire"
TTelF.SetFocus
Exit Sub
End If
End Sub
Merci
--
Cordialement

"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de
news:%
"JPMonnier" a écrit dans le message de news:

Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private
Sub n'autoriser qu'une valeur numérique de 10 chiffres



Un test sur la valeur numerique ET un test sur la longueur de la chaine :
if isnumeric(...) and len(...) then....

Etc






Avatar
JPMonnier
Bonjour Garnote,
Merci
Le Cancel = True inhibe le SetFocus
Je ne passe plus au TB suivant, mais je suis obligé de resélectionner mon TB
pour reprendre la main
??

--
Cordialement

"garnote" a écrit dans le message de
news:%
Bonjour,

Alors, peut-être ceci :
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox2.Value) Or Len(TextBox2.Value) <> 10 Then
Cancel = True
TextBox2.SetFocus
End If
End Sub

Serge


"JPMonnier" a écrit dans le message de news:

Bonjour Caetera
Merci c'est Ok, mais mon SetFocus ne fonctionne pas, il me renvoie bien
mon Msgbox de mauvaise saisie
voici mon test sans contrôler la longueur

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TTelF.Value) = False Then
MsgBox "Num obligatoire"
TTelF.SetFocus
Exit Sub
End If
End Sub
Merci
--
Cordialement

"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de
news:%
"JPMonnier" a écrit dans le message de news:

Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private
Sub n'autoriser qu'une valeur numérique de 10 chiffres



Un test sur la valeur numerique ET un test sur la longueur de la chaine
:
if isnumeric(...) and len(...) then....

Etc










Avatar
garnote
Bonjour,

Avec un UserForm contenant trois TextBox
(TextBox1, TextBox2 et TextBox3) et cette macro :
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
v = TextBox1.Value
For i = 1 To Len(v)
If IsNumeric(Mid(v, i, 1)) Then k = k + 1
Next i
If k <> 10 Then
MsgBox "Nombre positif de 10 chiffres exigé."
Cancel = True
TextBox1.SetFocus
End If
End Sub
je ne peux pas sortir du TextBox1 tant qu'il ne contient pas
un nombre positif de 10 chiffres.
S'il contient un tel nombre, je peux alors sélectionner un autre
TextBox et si je tape sur "Entrée", le focus se met sur TextBox2.
Est-ce bien cela que tu veux ?
Inconvénient : Quand je ferme le UserForm, le message apparaît.

Serge




"JPMonnier" a écrit dans le message de news:

Bonjour Garnote,
Merci
Le Cancel = True inhibe le SetFocus
Je ne passe plus au TB suivant, mais je suis obligé de resélectionner mon
TB pour reprendre la main
??

--
Cordialement

"garnote" a écrit dans le message de
news:%
Bonjour,

Alors, peut-être ceci :
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox2.Value) Or Len(TextBox2.Value) <> 10 Then
Cancel = True
TextBox2.SetFocus
End If
End Sub

Serge


"JPMonnier" a écrit dans le message de news:

Bonjour Caetera
Merci c'est Ok, mais mon SetFocus ne fonctionne pas, il me renvoie bien
mon Msgbox de mauvaise saisie
voici mon test sans contrôler la longueur

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TTelF.Value) = False Then
MsgBox "Num obligatoire"
TTelF.SetFocus
Exit Sub
End If
End Sub
Merci
--
Cordialement

"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de
news:%
"JPMonnier" a écrit dans le message de
news:
Je bloque sur les contrôles de TextBox, je souhaiterais avec la
Private Sub n'autoriser qu'une valeur numérique de 10 chiffres



Un test sur la valeur numerique ET un test sur la longueur de la chaine
:
if isnumeric(...) and len(...) then....

Etc













Avatar
JPMonnier
Merci Garnote
C'est bien ce que je veux

--
Cordialement


"garnote" a écrit dans le message de
news:%
Bonjour,

Avec un UserForm contenant trois TextBox
(TextBox1, TextBox2 et TextBox3) et cette macro :
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
v = TextBox1.Value
For i = 1 To Len(v)
If IsNumeric(Mid(v, i, 1)) Then k = k + 1
Next i
If k <> 10 Then
MsgBox "10 chiffres exigés."
Cancel = True
TextBox1.SetFocus
End If
End Sub
je ne peux pas sortir du TextBox1 tant qu'il ne contient pas
un nombre positif de 10 chiffres.
S'il contient un tel nombre, je peux alors sélectionner un autre
TextBox et si je tape sur "Entrée", le focus se met sur TextBox2.
Est-ce bien cela que tu veux ?
Inconvénient : Quand je ferme le UserForm, le message apparaît.

Serge




"JPMonnier" a écrit dans le message de news:

Bonjour Garnote,
Merci
Le Cancel = True inhibe le SetFocus
Je ne passe plus au TB suivant, mais je suis obligé de resélectionner mon
TB pour reprendre la main
??

--
Cordialement

"garnote" a écrit dans le message de
news:%
Bonjour,

Alors, peut-être ceci :
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox2.Value) Or Len(TextBox2.Value) <> 10 Then
Cancel = True
TextBox2.SetFocus
End If
End Sub

Serge


"JPMonnier" a écrit dans le message de news:

Bonjour Caetera
Merci c'est Ok, mais mon SetFocus ne fonctionne pas, il me renvoie bien
mon Msgbox de mauvaise saisie
voici mon test sans contrôler la longueur

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TTelF.Value) = False Then
MsgBox "Num obligatoire"
TTelF.SetFocus
Exit Sub
End If
End Sub
Merci
--
Cordialement

"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de
news:%
"JPMonnier" a écrit dans le message de
news:
Je bloque sur les contrôles de TextBox, je souhaiterais avec la
Private Sub n'autoriser qu'une valeur numérique de 10 chiffres



Un test sur la valeur numerique ET un test sur la longueur de la
chaine :
if isnumeric(...) and len(...) then....

Etc

















Avatar
MichDenis
Bonjour,

Il y a ceci :
'-------------------------------------
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

Dim X As Variant
X = Me.TextBox1
If Len(X) = 10 Then
For a = 1 To Len(X)
If Not IsNumeric(Mid(X, a, 1)) Then
Cancel = True
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = a - 1
Me.TextBox1.SelLength = 1
MsgBox "Ceci n'est pas un chiffre"
Exit Sub
End If
Next
Else
MsgBox "Le textbox doit contenir 10 chiffres."
Cancel = True
Me.TextBox1.SetFocus
End If
End Sub
'-------------------------------------

"JPMonnier" a écrit dans le message de groupe de discussion :

Bonjour,
Excel 2000
Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private Sub
suivante

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)

n'autoriser qu'une valeur numérique de 10 chiffres
puis suivi d'un Setfocus si le TextBox ne rempli pas cette condition
Merci d'avance

--
Cordialement

Avatar
JPMonnier
Bonjour MichelDenis et merci,
Le contrôle fonctionne bien mais le SetFocus n'est pas actif dans mon
TextBox, je suis obligé de le sélectionner avec la souris !!

--
Cordialement


"MichDenis" a écrit dans le message de
news:%
Bonjour,

Il y a ceci :
'-------------------------------------
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

Dim X As Variant
X = Me.TextBox1
If Len(X) = 10 Then
For a = 1 To Len(X)
If Not IsNumeric(Mid(X, a, 1)) Then
Cancel = True
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = a - 1
Me.TextBox1.SelLength = 1
MsgBox "Ceci n'est pas un chiffre"
Exit Sub
End If
Next
Else
MsgBox "Le textbox doit contenir 10 chiffres."
Cancel = True
Me.TextBox1.SetFocus
End If
End Sub
'-------------------------------------

"JPMonnier" a écrit dans le message de groupe
de discussion :

Bonjour,
Excel 2000
Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private
Sub
suivante

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)

n'autoriser qu'une valeur numérique de 10 chiffres
puis suivi d'un Setfocus si le TextBox ne rempli pas cette condition
Merci d'avance

--
Cordialement




Avatar
MichDenis
L'événement "Before_Update" pour qu'elle s'enclenche, le textbox doit
avoir reçu un caractère quelconque ! si l'usager n'a jamais
rien saisi dans le textbox, l'événement ne va pas se déclencher
si l'usager décide de cliquer dans un autre textbox.

Ajoute ceci dans ton formulaire, cela forcera l'usager à répondre
obligatoirement aux exigences de ton textbox dès qu'il aura mis
le "pied" dedans.
'---------------------
Private Sub TextBox1_Enter()
Me.TextBox1 = " ": Me.TextBox1 = ""
End Sub
'---------------------


"JPMonnier" a écrit dans le message de groupe de discussion :
Oe$
Bonjour MichelDenis et merci,
Le contrôle fonctionne bien mais le SetFocus n'est pas actif dans mon
TextBox, je suis obligé de le sélectionner avec la souris !!

--
Cordialement


"MichDenis" a écrit dans le message de
news:%
Bonjour,

Il y a ceci :
'-------------------------------------
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

Dim X As Variant
X = Me.TextBox1
If Len(X) = 10 Then
For a = 1 To Len(X)
If Not IsNumeric(Mid(X, a, 1)) Then
Cancel = True
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = a - 1
Me.TextBox1.SelLength = 1
MsgBox "Ceci n'est pas un chiffre"
Exit Sub
End If
Next
Else
MsgBox "Le textbox doit contenir 10 chiffres."
Cancel = True
Me.TextBox1.SetFocus
End If
End Sub
'-------------------------------------

"JPMonnier" a écrit dans le message de groupe
de discussion :

Bonjour,
Excel 2000
Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private
Sub
suivante

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)

n'autoriser qu'une valeur numérique de 10 chiffres
puis suivi d'un Setfocus si le TextBox ne rempli pas cette condition
Merci d'avance

--
Cordialement




Avatar
JPMonnier
Merci beaucoup, c'est le top
--
Cordialement

"MichDenis" a écrit dans le message de
news:
L'événement "Before_Update" pour qu'elle s'enclenche, le textbox doit
avoir reçu un caractère quelconque ! si l'usager n'a jamais
rien saisi dans le textbox, l'événement ne va pas se déclencher
si l'usager décide de cliquer dans un autre textbox.

Ajoute ceci dans ton formulaire, cela forcera l'usager à répondre
obligatoirement aux exigences de ton textbox dès qu'il aura mis
le "pied" dedans.
'---------------------
Private Sub TextBox1_Enter()
Me.TextBox1 = " ": Me.TextBox1 = ""
End Sub
'---------------------


"JPMonnier" a écrit dans le message de groupe
de discussion :
Oe$
Bonjour MichelDenis et merci,
Le contrôle fonctionne bien mais le SetFocus n'est pas actif dans mon
TextBox, je suis obligé de le sélectionner avec la souris !!

--
Cordialement


"MichDenis" a écrit dans le message de
news:%
Bonjour,

Il y a ceci :
'-------------------------------------
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

Dim X As Variant
X = Me.TextBox1
If Len(X) = 10 Then
For a = 1 To Len(X)
If Not IsNumeric(Mid(X, a, 1)) Then
Cancel = True
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = a - 1
Me.TextBox1.SelLength = 1
MsgBox "Ceci n'est pas un chiffre"
Exit Sub
End If
Next
Else
MsgBox "Le textbox doit contenir 10 chiffres."
Cancel = True
Me.TextBox1.SetFocus
End If
End Sub
'-------------------------------------

"JPMonnier" a écrit dans le message de groupe
de discussion :

Bonjour,
Excel 2000
Je bloque sur les contrôles de TextBox, je souhaiterais avec la Private
Sub
suivante

Private Sub TTelF_Exit(ByVal Cancel As MSForms.ReturnBoolean)

n'autoriser qu'une valeur numérique de 10 chiffres
puis suivi d'un Setfocus si le TextBox ne rempli pas cette condition
Merci d'avance

--
Cordialement