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

qu'es ce qui ne va pas

11 réponses
Avatar
Gerard
Bonjour

voila ma sub elle est tres explicite, mais ne fait pas exactement ce que je
veux

Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)

With Me.TxtPhone

If .Value <> "" And Len(.Text) <> 10 Then
MsgBox ("La saisie du Téléphone à 10 chiffres")

Cancel = True
.SelStart = 0
.SetFocus
.SelLength = Len(.Text)
Else
'mise en format
TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
""##")
Exit Sub

End If

End With
End sub

si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
contenu. mais avec le msgbox rien.

merci de votre aide

ge

10 réponses

1 2
Avatar
Yvan
Salut Gérard

Il me semble que lorsque tu cliques sur la MsgBox, ta TextBox perd le focus et est
dans les choux.
Si c'est bien çà, il te suffit d'ajouter la ligne

Me.SetFocus

juste après la ligne de la MsgBox.

Essaies et dis-moi STP .

@+

Yvan



"Gerard" a écrit dans le message de news:
42f64097$0$22273$
| Bonjour
|
| voila ma sub elle est tres explicite, mais ne fait pas exactement ce que je
| veux
|
| Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
|
| With Me.TxtPhone
|
| If .Value <> "" And Len(.Text) <> 10 Then
| MsgBox ("La saisie du Téléphone à 10 chiffres")
|
| Cancel = True
| .SelStart = 0
| .SetFocus
| .SelLength = Len(.Text)
| Else
| 'mise en format
| TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
| ""##")
| Exit Sub
|
| End If
|
| End With
| End sub
|
| si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
| contenu. mais avec le msgbox rien.
|
| merci de votre aide
|
| ge
|
|
|
|
Avatar
Yvan
Sorry!

Tu l'as mis plus loin et je l'avais pas vu. Je me suis emballé un peu vite.
Yvan

"Gerard" a écrit dans le message de news:
42f64097$0$22273$
| Bonjour
|
| voila ma sub elle est tres explicite, mais ne fait pas exactement ce que je
| veux
|
| Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
|
| With Me.TxtPhone
|
| If .Value <> "" And Len(.Text) <> 10 Then
| MsgBox ("La saisie du Téléphone à 10 chiffres")
|
| Cancel = True
| .SelStart = 0
| .SetFocus
| .SelLength = Len(.Text)
| Else
| 'mise en format
| TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
| ""##")
| Exit Sub
|
| End If
|
| End With
| End sub
|
| si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
| contenu. mais avec le msgbox rien.
|
| merci de votre aide
|
| ge
|
|
|
|
Avatar
michdenis
Bonjour Gérard,

Essaie ceci :

Utilise cet événement pour mettre en forme ton textbox

Remplace ta procédure par celle-ci :
'------------------------------
Private Sub TxtPhone_Change()

TextBox1 = Telephone(TxtPhone)

End Sub
'------------------------------

Et

'Copie cette fonction dans un module standard.
'Cette fonction peut déservir autant de textbox que
'tu voudras (qui contient ce type de numéros de téléphone)
'-----------------------------
Function Telephone(Tbox As MSForms.TextBox)

Dim Nb As Integer, R As String, G As String
Dim T As String, A As Integer

T = Tbox
T = WorksheetFunction.Substitute(Tbox, " ", "")
Nb = Len(T)

If Nb > 10 Then
Tbox = Left(Tbox, Len(Tbox) - 1)
Telephone = Tbox
Exit Function
End If

For A = 1 To Nb
If IsNumeric(Mid(T, A, 1)) = True Then
R = R & Mid(T, A, 1)
End If
Next
For A = 1 To Nb Step 2
G = G & Mid(R, A, 2) & " "
Next
Telephone = Trim(G)

End Function
'-----------------------------



Salutations!





"Gerard" a écrit dans le message de news: 42f64097$0$22273$
Bonjour

voila ma sub elle est tres explicite, mais ne fait pas exactement ce que je
veux

Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)

With Me.TxtPhone

If .Value <> "" And Len(.Text) <> 10 Then
MsgBox ("La saisie du Téléphone à 10 chiffres")

Cancel = True
.SelStart = 0
.SetFocus
.SelLength = Len(.Text)
Else
'mise en format
TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
""##")
Exit Sub

End If

End With
End sub

si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
contenu. mais avec le msgbox rien.

merci de votre aide

ge
Avatar
Yvan
Re bonsoir, Gérard

Pour moi ton code marche Nickel.

J'ai fait un simple Copier/Coller. Elle a fonctionné nickel du premier coup!
Je ne vois pas où il y aurait un problème.

Ceci dit, ce que te propose Denis est évidemment impeccable.

Yvan


"Gerard" a écrit dans le message de news:
42f64097$0$22273$
| Bonjour
|
| voila ma sub elle est tres explicite, mais ne fait pas exactement ce que je
| veux
|
| Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
|
| With Me.TxtPhone
|
| If .Value <> "" And Len(.Text) <> 10 Then
| MsgBox ("La saisie du Téléphone à 10 chiffres")
|
| Cancel = True
| .SelStart = 0
| .SetFocus
| .SelLength = Len(.Text)
| Else
| 'mise en format
| TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
| ""##")
| Exit Sub
|
| End If
|
| End With
| End sub
|
| si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
| contenu. mais avec le msgbox rien.
|
| merci de votre aide
|
| ge
|
|
|
|
Avatar
Gerard
bonsoir
oui c'est pas mal
sauf que ca ne gere pas si il y a moins de 10 chiffres..
enfin il faut que je trouve pourquoi chez moi (a tes dires) mon message
annule le sellenght du focus
je cherche...
A+


"Yvan" <yvan.echanges(enlever ceci)@free.fr> a écrit dans le message de
news:
Re bonsoir, Gérard

Pour moi ton code marche Nickel.

J'ai fait un simple Copier/Coller. Elle a fonctionné nickel du premier
coup!
Je ne vois pas où il y aurait un problème.

Ceci dit, ce que te propose Denis est évidemment impeccable.

Yvan


"Gerard" a écrit dans le message de news:
42f64097$0$22273$
| Bonjour
|
| voila ma sub elle est tres explicite, mais ne fait pas exactement ce que
je
| veux
|
| Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
|
| With Me.TxtPhone
|
| If .Value <> "" And Len(.Text) <> 10 Then
| MsgBox ("La saisie du Téléphone à 10 chiffres")
|
| Cancel = True
| .SelStart = 0
| .SetFocus
| .SelLength = Len(.Text)
| Else
| 'mise en format
| TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##""
""##""
| ""##")
| Exit Sub
|
| End If
|
| End With
| End sub
|
| si je retire le Msgbox, le textbox en prenant le focus selectionne bien
le
| contenu. mais avec le msgbox rien.
|
| merci de votre aide
|
| ge
|
|
|
|




Avatar
Yvan
Très honnêtement je ne vois pas pourquoi çà fonctionnerait ici et pas chez toi!

Si tu veux me laisser ton classeur sur www.cjoint.com, je veux bien y jeter un oeil
ce soir.

A+

Yvan

"Gerard" a écrit dans le message de news:
42f659f2$0$22317$
| bonsoir
| oui c'est pas mal
| sauf que ca ne gere pas si il y a moins de 10 chiffres..
| enfin il faut que je trouve pourquoi chez moi (a tes dires) mon message
| annule le sellenght du focus
| je cherche...
| A+
|
Avatar
MPi
Salut,

Si je fais comme ceci, ça semble bien fonctionner.
Pas besoin de SetFocus. Cancel = True s'en charge.
J'ai modifié le Format de façon plus simple.
Et j'ai changé le Cancel = True de place

Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.txtPhone
If Not IsNumeric(.Text) Or Len(.Text) <> 10 Then
MsgBox ("La saisie du Téléphone à 10 chiffres")
.SelStart = 0
.SelLength = Len(.Text)
Cancel = True
Else
'mise en format
txtPhone.Text = Format(txtPhone.Text, "00 00 00 00 00")
Exit Sub
End If
End With
End Sub

Michel

"Gerard" a écrit dans le message de
news:42f64097$0$22273$
Bonjour

voila ma sub elle est tres explicite, mais ne fait pas exactement ce que
je

veux

Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)

With Me.TxtPhone

If .Value <> "" And Len(.Text) <> 10 Then
MsgBox ("La saisie du Téléphone à 10 chiffres")

Cancel = True
.SelStart = 0
.SetFocus
.SelLength = Len(.Text)
Else
'mise en format
TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
""##")
Exit Sub

End If

End With
End sub

si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
contenu. mais avec le msgbox rien.

merci de votre aide

ge






Avatar
michdenis
Bonjour Gérard,

Remarque : La fonction que je présente est utile au moment de la saisie du textbox. Elle limite la saisie seulement aux entrées
numériques tout en mettant en forme au fur et à mesure de la saise.

Cependant, on valide par une procédure générale associée à un bouton de commande, l'ensemble de tous les contrôles OBLIGATOIRES que
doit renseigner l'usager pour que l'enregistrement soit valide.. Tous les contrôles qui ne doivent pas être vide ou doivent avoir
certaines caractéristiques sont validés à l'aide d'une procédure générale.

Est-ce imaginable que le contrôle "TxtPhone" demeure vide lors de la validation générale? Si non, ta procédure sous l'événement
"Exit" n'oblige pas l'usager à saisir ce numéro de téléphone. Qu'est-ce que se passe s'il n'entre jamais dans le textbox ? Comment
ta procédure va l'obliger à le remplir si ce n'est qu'au moment de la vérification générale. Comme la fonction proposée contrôle ce
que j'usager peut y entrer (TextPhone), il ne te reste plus qu'à vérifier le nombre de caractères du textbox (14 -> 10 digits + 4
espaces) au moment de la vérification générale.

Il y a aussi ceci ... une fonction modifiée...!

'-------------------------------
Private Sub TxtPhone_Change()

TxtPhone = Telephone(TxtPhone, TxtPhone.SelStart)

End Sub
'-------------------------------

Function Telephone(Tbox As MSForms.TextBox, Position)

Dim Nb As Integer, A As Integer
Dim T As String, G As String

If Position = 0 Then Exit Function
If Not IsNumeric(Mid(Tbox, Position, 1)) Or Position = 15 Then
Telephone = Left(Tbox, Len(Tbox) - 1)
Exit Function
End If

T = WorksheetFunction.Substitute(Tbox, " ", "")
Nb = Len(T)

For A = 1 To Nb Step 2
G = G & Mid(T, A, 2) & " "
Next
Telephone = Trim(G)

End Function
'-------------------------------


Salutations!






"Gerard" a écrit dans le message de news: 42f659f2$0$22317$
bonsoir
oui c'est pas mal
sauf que ca ne gere pas si il y a moins de 10 chiffres..
enfin il faut que je trouve pourquoi chez moi (a tes dires) mon message
annule le sellenght du focus
je cherche...
A+


"Yvan" <yvan.echanges(enlever ceci)@free.fr> a écrit dans le message de
news:
Re bonsoir, Gérard

Pour moi ton code marche Nickel.

J'ai fait un simple Copier/Coller. Elle a fonctionné nickel du premier
coup!
Je ne vois pas où il y aurait un problème.

Ceci dit, ce que te propose Denis est évidemment impeccable.

Yvan


"Gerard" a écrit dans le message de news:
42f64097$0$22273$
| Bonjour
|
| voila ma sub elle est tres explicite, mais ne fait pas exactement ce que
je
| veux
|
| Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
|
| With Me.TxtPhone
|
| If .Value <> "" And Len(.Text) <> 10 Then
| MsgBox ("La saisie du Téléphone à 10 chiffres")
|
| Cancel = True
| .SelStart = 0
| .SetFocus
| .SelLength = Len(.Text)
| Else
| 'mise en format
| TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##""
""##""
| ""##")
| Exit Sub
|
| End If
|
| End With
| End sub
|
| si je retire le Msgbox, le textbox en prenant le focus selectionne bien
le
| contenu. mais avec le msgbox rien.
|
| merci de votre aide
|
| ge
|
|
|
|




Avatar
Gerard
bonsoir michdenis
et encore merci pour toute ton aide
il est vrai que j'ai ete ingras avec ces quelques mots "pas mal" toutes mes
escuses ;d'ailleurs je suis loin d'avoir toutes tes connaissances, tres loin
et je suis tout a fait d'accord avec toi....sur la marche de la procedure et
des verification avant de valider....

je vais arreer pour ce soir car demain boulot des 5H30, il faut dormir un
petit peu

merci encor a tous et bonne nuit
salutations
Gerard

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

Bonjour Gérard,

Remarque : La fonction que je présente est utile au moment de la saisie du
textbox. Elle limite la saisie seulement aux entrées
numériques tout en mettant en forme au fur et à mesure de la saise.

Cependant, on valide par une procédure générale associée à un bouton de
commande, l'ensemble de tous les contrôles OBLIGATOIRES que
doit renseigner l'usager pour que l'enregistrement soit valide.. Tous les
contrôles qui ne doivent pas être vide ou doivent avoir
certaines caractéristiques sont validés à l'aide d'une procédure générale.

Est-ce imaginable que le contrôle "TxtPhone" demeure vide lors de la
validation générale? Si non, ta procédure sous l'événement
"Exit" n'oblige pas l'usager à saisir ce numéro de téléphone. Qu'est-ce
que se passe s'il n'entre jamais dans le textbox ? Comment
ta procédure va l'obliger à le remplir si ce n'est qu'au moment de la
vérification générale. Comme la fonction proposée contrôle ce
que j'usager peut y entrer (TextPhone), il ne te reste plus qu'à vérifier
le nombre de caractères du textbox (14 -> 10 digits + 4
espaces) au moment de la vérification générale.

Il y a aussi ceci ... une fonction modifiée...!

'-------------------------------
Private Sub TxtPhone_Change()

TxtPhone = Telephone(TxtPhone, TxtPhone.SelStart)

End Sub
'-------------------------------

Function Telephone(Tbox As MSForms.TextBox, Position)

Dim Nb As Integer, A As Integer
Dim T As String, G As String

If Position = 0 Then Exit Function
If Not IsNumeric(Mid(Tbox, Position, 1)) Or Position = 15 Then
Telephone = Left(Tbox, Len(Tbox) - 1)
Exit Function
End If

T = WorksheetFunction.Substitute(Tbox, " ", "")
Nb = Len(T)

For A = 1 To Nb Step 2
G = G & Mid(T, A, 2) & " "
Next
Telephone = Trim(G)

End Function
'-------------------------------


Salutations!






"Gerard" a écrit dans le message de news:
42f659f2$0$22317$
bonsoir
oui c'est pas mal
sauf que ca ne gere pas si il y a moins de 10 chiffres..
enfin il faut que je trouve pourquoi chez moi (a tes dires) mon message
annule le sellenght du focus
je cherche...
A+


"Yvan" <yvan.echanges(enlever ceci)@free.fr> a écrit dans le message de
news:
Re bonsoir, Gérard

Pour moi ton code marche Nickel.

J'ai fait un simple Copier/Coller. Elle a fonctionné nickel du premier
coup!
Je ne vois pas où il y aurait un problème.

Ceci dit, ce que te propose Denis est évidemment impeccable.

Yvan


"Gerard" a écrit dans le message de news:
42f64097$0$22273$
| Bonjour
|
| voila ma sub elle est tres explicite, mais ne fait pas exactement ce
que
je
| veux
|
| Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)
|
| With Me.TxtPhone
|
| If .Value <> "" And Len(.Text) <> 10 Then
| MsgBox ("La saisie du Téléphone à 10 chiffres")
|
| Cancel = True
| .SelStart = 0
| .SetFocus
| .SelLength = Len(.Text)
| Else
| 'mise en format
| TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##""
""##""
| ""##")
| Exit Sub
|
| End If
|
| End With
| End sub
|
| si je retire le Msgbox, le textbox en prenant le focus selectionne bien
le
| contenu. mais avec le msgbox rien.
|
| merci de votre aide
|
| ge
|
|
|
|









Avatar
Gerard
bonjour

eh oui une petite nuit de sommeil fait bien les chose
j'ai trouvé le pourquoi du message et du sellenght.
pour que les deux marche ensemble, il suffit de mettre tout simplement la
propriete Modale de la feuille sur True..
et le tout fonctionne avec le code simple du depart..
merci a tous
ge
"Gerard" a écrit dans le message de news:
42f64097$0$22273$
Bonjour

voila ma sub elle est tres explicite, mais ne fait pas exactement ce que
je veux

Private Sub TxtPhone_Exit(ByVal Cancel As MSForms.ReturnBoolean)

With Me.TxtPhone

If .Value <> "" And Len(.Text) <> 10 Then
MsgBox ("La saisie du Téléphone à 10 chiffres")

Cancel = True
.SelStart = 0
.SetFocus
.SelLength = Len(.Text)
Else
'mise en format
TxtPhone.Text = Format(TxtPhone.Text, "0#"" ""##"" ""##"" ""##""
""##")
Exit Sub

End If

End With
End sub

si je retire le Msgbox, le textbox en prenant le focus selectionne bien le
contenu. mais avec le msgbox rien.

merci de votre aide

ge






1 2