panicq
Messages postés66Date d'inscriptionmardi 14 novembre 2000StatutMembreDernière intervention18 janvier 2010
-
20 oct. 2007 à 15:12
boursicotteur
Messages postés201Date d'inscriptionmercredi 25 septembre 2002StatutMembreDernière intervention10 novembre 2007
-
20 oct. 2007 à 20:42
Bonjour à tous,
J'ai sur une form un textbox et un bouton et j'ai mis ce code dessus:
Dim variable1 As String
Private Sub Command1_Click()
If Text1.Text = variable1 & "=" Then
MsgBox ("Super!")
End If
End Sub
En fait j'aurais aimé que dès que l'on entre une chaine de caracter plus le signe egale,dans un textbox, alors un message box s'affiche. Comment faire?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 20 oct. 2007 à 18:32
Salut
Non, il ne va pas surveiller caractère par caractère (oublie le KeyAscii).
Oui pour KeyPress qui va se déclencher à chaque fois qu'une lettre est tapée.
Le vrai détail, c'est, quand tu dis "dès que l'on entre une chaine", pour toi, c'est "dès qu'on écrit le dernier caractère" ou bien "quand on clique sur le bouton" ?
Si c'est dès que l'on rentre le dernier caractère, Oui, le KeyPress est l'endroit correct pour insérer le test que tu as prévu.
Pour la comparaison de chaine, attention à la casse (min maj), "A" n'est pas égal à "a"
Si tu dois tester la chaine en tenant compte les min/maj, Ok, garde ton test.
Si les min/maj n'ont pas d'importance, il faut modifier et ramener tout les textes dans la même casse :
Private Sub Text1_KeyPress( ... )
If LCase(Text1.Text) = (LCase(variable1) & "=") Then
MsgBox ("Super!")
End If
End Sub
Ton code sous-entend que le contenu de "variable1" ne contient pas le signe "=" final.
J'ai aussi ajouté un niveau de parenthèses après le premier "=" afin d'être plus clair, mais cela ne changera rien au test.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
boursicotteur
Messages postés201Date d'inscriptionmercredi 25 septembre 2002StatutMembreDernière intervention10 novembre 2007 20 oct. 2007 à 20:42
panicq
Ton message n'est pas clair mais c'est OK car tu fais mieux que moi quand j'avais 12 ans!
1-Ton code dit:
Je veux afficher un msgBox quand le contenu du txtBox est égal au contenu de variable1 ajouté d'un "= ".
Cela suppose que tu entres des caractères dans ton txtBox et que tu compares le contenu (quand? continuellement ou à la fin?) avec celui de variable1 (déjà remplis).
C'est sur cet aspect que jack a répondu!
2- Ta question dit:
En fait j'aurais aimé que dès que l'on entre une chaîne de caractères plus le signe "=",dans un textbox, alors un message box s'affiche.
Ici tu ne parles plus de ta variable1... ! ! !
Si tu t'es bien exprimé et que tu ne veux effectivement pas prendre en compte cette variable alors le problème est totalement différent.
Tu dois alors afficher ton msgBox lorsqu'un "string quelconque" terminé par le caractère "=" est détecté dans ton txtBox.
Mais un string quelconque peut être absolument n'importe quoi et comporter n'importe quel nombre de caractères.
ex: " =" contient un string de 1 caractère vide
ex: "12345=" contient un string de 5 caractères
Pour détecter ce string "inconnu" sans savoir de quoi il a l'air, tu n'as qu'à trouver la position du caractère "=" à l'intérieur du string total. C'est exactement ce que fait la fonction instr( )!
InStr (Text1.Text, " =")
Si instr( ) retourne 1, cela veut dire que "= " est le premier caractère du string total. Donc c'est pas ce que tu cherches!
Si par contre instr( ) retourne un nombre > 1 alors c'est presque gagné. Il te reste à vérifier que "=" est bien le dernier caractère.
Len (Text1.Text) va te dire combien de caractères il y a dans ton string total.
Tu pourras afficher ton msgBox lorsque:
InStr(Text1.Text, " =") = Len (Text1.Text)
Voici le code final:
Private Sub Text1_KeyPress( ... )
If InStr(Text1.Text, " =") <= 1 then exit sub
If InStr (Text1.Text, " =") = Len(Text1.Text) Then
MsgBox ("Super!")
End If
End Sub