Programmation

Résolu
VB64MUS - 31 août 2012 à 09:08
 VB64MUS - 31 août 2012 à 16:47
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

Merci.

5 réponses

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.

Merci encore
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
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és 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
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és 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
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 ?

Posez votre question
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
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)
Rejoignez-nous