Salut tout le monde
Voila je demande l’assistance des membres du forum pour trouver la réponse à ma question suivante :
Je voudrai afficher en code VBA tous les caractères « concaténés » dans MSGBOX au fur et à mesure que l’utilisateur tape une touche du clavier.( Maximum prévue 22 caractères).
Le code suivant marche seulement pour une seule touche tapée :
Private Sub TEXTBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
k = k + 1 ‘Je pense qu’elle doit être ailleur
if k=22 exit sub
CR = CR & Chr(KeyAscii) ‘ La concatenation ne marche pas car il me semble que la variable « cr » est initialisée à chaque fois
MsgBox CR
End Sub
Tout d'abord je remercie l'administrateur de m'avoir répondu à mon commentaire avec compréhension et grande hospitalité. Je me permet de répondre en douceur à ma propre question à travers le bout de code vba écrit ci dessous :
Public CR As String
-----------------------------
Private Sub ListBox1_Click()
End Sub
------------------------------
Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
CR = CR & Chr(KeyAscii) 'Ici CR reçoit les caractères convertis
MsgBox CR
End Sub
Explications :
Prévoir une Userform ,une listBox1,une variable CR type public initialisée à chaque nouvelle saisie de touches sur clavier et une Boite MSGBOX qui affiche au fur et mesure les caractères tapés.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 31 août 2012 à 09:22
Bonjour,
où et comment as-tu déclaré ta variable k ?
où et comment as-tu déclaré ta variable CR ?
Car si nullepart, k 1 à chaque frappe et CR Chr(KeyAscii) ‘ à chaque frappe !
Prends l'habitude de travailler en option Explicit.
if k=22 exit sub ne correspond à aucune syntaxe valide
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 31 août 2012 à 09:28
Et interesse-toi (dans ton aide VBA) à ce qu'est la fonction Len. K te sera alors inutile.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 31 août 2012 à 09:31
Ah oui !
Ouvre ton aide VBA sur la propriété MaxLength d'une textbox, également
Essaye enfin de donner dorénavant un titre explicite aux discussions que tu ouvres.
"programmation" ! Tu m'étonnes ! ... sur un forum de développement ! ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 août 2012 à 12:03
Salut
Sortir de la Sub si k > 22 ne sert à rien : le caractère sera quand même là.
Si tu ne veux pas de ce caractère, il faut remettre à 0 le KeyAscii.
Mais mieux vaudrait, comme l'a dit ucfoutu, gérer cela au travers de MaxLength
Pourquoi vouloir compter et concaténer alors que tout ça est dans :
- Les caractères : dans TextBox1.Text
- Nombre de caractères : dans Len(TextBox1.Text)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)