cs_antom
Messages postés44Date d'inscriptionvendredi 25 janvier 2008StatutMembreDernière intervention17 mai 2012
-
14 mai 2009 à 17:20
cs_antom
Messages postés44Date d'inscriptionvendredi 25 janvier 2008StatutMembreDernière intervention17 mai 2012
-
16 mai 2009 à 11:10
Bonjour tout le monde,
C'est terrible, je ne parviens pas à forcer ce format ci dessous dans un TextBox.
Si je saisis dans le TextBox 0034953456754, je souhaiterais que dans ce même TextBox, qu'il affiche
+3495 345 67 54 au fur et à mesure que je saisis...
Possible ?
Donc par macro, j'ai déjà essayé ceci, entre autres... mais en vain.
Private Sub TextBox1_Change()
TextBox1 = Format(TextBox1, """+""#### ### ## ##")
End Sub
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 mai 2009 à 19:10
Bonjour,
Je n'ai pas vraiment envie d'écrire à ta place tout de ce "machin"-là (il faut que tu mérites un peu les choses en faisant ton propre effort).
Je vais donc me contenter de te macher le travail et te laisser continuer pour ce qui est d'améliorations :
Avec une textbox nommée Text1 et sa propriété maxlength à 16)
Private Sub Text1_Change()
Dim filtre As String, titi As Integer
If Len(Text1.Text) < 2 Then Exit Sub
filtre = Mid("#### #### ## ##", 1, Len(Text1.Text) - 1) titi IIf(Left(Text1.Text, 1) "+", 2, 1)
Text1.Text = "+" & Format(Val(Mid(Text1.Text, titi)), filtre)
Text1.SelStart = Len(Text1.Text)
End Sub
Et tu n'auras même pas à te soucier de contrôler que les caractères saisis sont bien numériques.
Je te laisse découvrir, analyser, comprendre ... et arranger à ta sauce ...
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 15 mai 2009 à 21:57
Ah....
NBon, ce n'est pas bon ....
Saisis qujelquechose et reviens en arrikère jusqu'au bout par le backspace ===>> tu auras une erreur au dernier backsâce, forcément...
Bon !
Tu as choisi l'évènement Change et je t'ai suivi juste pour le plaisir de forcer à la réflexion.
Qu'est cette réflexion ?
Tout simplement celle-ci : l'évènement Change est déclenché à chaqye fois que tu chan,ge le texte ...
Or, que se passe-t-il lorsque tu traites ? ===>> tu changes le texte et déclenche donc à nouveau l'év_nement change ...
Zut alors ... et comment faire dans un tel cas ?
Ainsi (et tu noteras au passage que j'ai supprimé un test IIf, forçant systématiqyement à 2 ( et pour cause, puyisque le change provoque une modification, donc un nouveau Change !°
Private Sub Text1_Change()
Dim filtre As String, titi As Integer If Text1.Text "+" Then Text1.Text "": Exit Sub ' oui, mais comme j'ai modifié, je vais y revenir, pardi ! If Len(Text1.Text) 1 Then Text1.Text "+" & Text1.Text: Exit Sub
If Text1.Text = "" Then Exit Sub ' et voilà comment eviter l'erreur du backspace final ....
filtre = Mid("#### ### ## ##", 1, Len(Text1.Text) - 1)
Text1.Text = "+" & Format(Val(Mid(Text1.Text, 2)), filtre) ' je force à 2 et ai reaison quel que soit le cas de figure . p^lus de IIf, donc !
Text1.SelStart = Len(Text1.Text)
End Sub
Voilà !
Analyse lentement... et réfléchis...
Maintenant : autant je t'ai suivi par jeu dans cet évènement Change, autant je vais t'encourager à utiliser plutôt (un peu différemment) l'évènement Keypress, qui t"évitera ces acrobaties de la pensée. Mais là, je vais te laisser faire...
Tu as déjà, en attendant, ta solution acrobatique avec le Change et elle marche sans faille...*
Amitiés et bonne étude
..
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 15 mai 2009 à 08:51
Il n'y a pas d'erreur, mais j'y ai "glissé" (volontairement) un test totalement inutile, juste pour voir si tu étais capable de trouver où et de le supprimer toi-même (c'est ma manière de forcer à la réflexion ...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_antom
Messages postés44Date d'inscriptionvendredi 25 janvier 2008StatutMembreDernière intervention17 mai 2012 15 mai 2009 à 12:04
Re,
Donc ok j'ai réussi, (tu m'as donné la soluce) j'ai juste retiré le premier If et modifié les dièses pour le format souhaité, ainsi que le nom des variables !
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 15 mai 2009 à 14:41
Ah ah !....
T'as pas suffisamment testé, toi ....
1) remets vite :
If Len(Text1.Text) < 2 Then Exit Sub
sinon : fais des backspace jusqu'au bout et tu vas voir la différence ...(===>> erreur garantie)!
2) alors comment faire pour que le + s'affiche dès le 1er caractère ?
C'est là que je t'attends (un peu d'astuce, sans plus ...)