Probleme de code

panicq Messages postés 66 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 18 janvier 2010 - 20 oct. 2007 à 15:12
boursicotteur Messages postés 201 Date d'inscription mercredi 25 septembre 2002 Statut Membre Dernière intervention 10 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?

Merci d'avance!
A+

3 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 oct. 2007 à 15:21
Il te faut alors utiliser l'évènement keypress et déclencher ta msgbox en évaluant l'argument Keyascii (si ou non = la valeur ascii du caractère =).
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
boursicotteur Messages postés 201 Date d'inscription mercredi 25 septembre 2002 Statut Membre Dernière intervention 10 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
0
Rejoignez-nous