Compter les caractères d'une text box

eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004 - 15 mai 2004 à 17:55
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 - 16 mai 2004 à 01:17
Bonjour a tous,
Je voudrais compter le nombre de caractères (lettre ou chiffre) dans une textbox.
Savez vous le faire ?
Merci pour vos reponses !

19 réponses

GlanduSchmoldu Messages postés 199 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 27 octobre 2006 1
15 mai 2004 à 18:13
Ben je suppose que Len(MaTextBox.text) devrai faire l'affaire.
0
eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004
15 mai 2004 à 20:15
La réponse que tu as donnée est bonne mais j'ai un autre problème:
Dans ma textbox quand je tape:
aaaa
il me retourne 4
Mais quand je tape
aaa
a
Il me retourne 6 alors qu'il n'y a que 4 caractere !
Que faire ???
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 20:32
C'est normal, entre "aaa" et "a" il y a un vbcrlf c'est a dire un chr$(10) & chr$(13) ( saut de ligne + retour chariot ou inversement je ne sais plus trop). c'est a dire 2 caracteres supplementaires. tout les espaces, les tabultationsetc sont comptés comme caracteres. A toi de gerer si tu ne les veux pas

bonne prog
liquide
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
15 mai 2004 à 20:38
Salut, si tu veux compter le nb de 'a' dans ton texte, il y à une méthode simple :

cpt=0
for i =1 to len(text1.text)
if mid$(text1.text,i,1)="a" then cpt=cpt+1
next

Cordialement

CanisLupus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004
15 mai 2004 à 20:40
Merci pour ta reponse c cool
:big)
0
eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004
15 mai 2004 à 20:48
Dernière question:
Comment faire pour lire ligne par ligne un textbox afin d'y trouver un eventuel retour chariot ?
Merci por vos futures reponses
:)
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 20:50
j'espere que tu n'as que des "a" à compter !!!
bin comme toujours je conseille la methode split, puisque elle est simple a mettre en oeuvre. si par hazard tu n'avais pas que des "a" a compter.

dim splitage() as string
dim compte as integer
compte = 0'pas necessaire mais "rassurant"
splitage() = split(text1.text, vbcrlf)
for i = lbound(splitage()) to ubound(splitage())
compte = compte + len(splitage(i))
next i
bonne prog
liquide
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 20:53
le retour chariot c'est le vbcrlf

y'a plein de post sur cela sur le site, sinon pour t'orienter tu peux faire une recherche sur "instr".

il existe toujours la methode split qui recupere ta ligne donc c'est automatique, tu as forcement un retour chariot sur valeurs retournées dasn ton tableau as string. tout depend de ce que tu veux faire.

bonne prog
liquide
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 20:57
ps petite rectif, le vbcrlf c'est retour chariot et saut de ligne, ce qui inclus force"ment le retour chariot.
liquide
0
eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004
15 mai 2004 à 21:09
Je te suis très reconaissant de m'aider mais je suis un gros débutant et j'avoue que je n'ai rien compris a ton dernier post
:blush) je vais te dire ce que je veux faire :
En fait j'ai une textbox multiligne
je veux compter le nombre de caractère quelle contient mais
les espaces rajoute 2 a chaque fois
je veux lire la textbox ligne a ligne et si sur la ligne il y a un espace on retire 2 au resultat de Len() et ensuite passer a la ligne suivante jusqu'a la fin de la textbox.
Voila merci de vous investir pour les debutants comme moi
:big)
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 22:26
tu veux retirer aussi les caracteres générés par la barre d'espacement ?
liquide
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 mai 2004 à 22:29
sur ta form tu mets un textbox multiligne
un listbox
un bouton
et le code suivant

Private Sub Command1_Click()
mytab = Split(Text1.Text, vbCrLf)
For Each caseTableau In mytab
List1.AddItem (Len(caseTableau))
Next
End Sub

et la pas de probleme

le split consomme les deux caracteres de fin de ligne

d'ou sans doute tes soit disant espace qui sont comptés deux fois je pense que tu enlevait un seul caractere a la fin des lignes et non deux.

Pour infos pour travailler sur les chaines de caractere tu as

-- split et son inverse "join"
-- trim qui vire les espaces tab et mais pas le crlf
-- instr pour la recheche d'un ou plusieurs caracteres
-- lcase et ucase pour mettre en minus et majuscule

et j'oublie pleins de fonctions
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 22:39
je ne comprend pas le principe de la consommation ?
j'ai beau faire plein d'essais ca comptabilise correctement avec le split
liquide
0
eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004
15 mai 2004 à 22:52
Liquide
Je me suis mal exprimé désolé
en fait l'histoire des "aaaa" c'etait un exemple
je veux savoir combien il y a de caractere dans ma textbox multiligne le probleme c ke quand j'utilise la fonction LEN le nombre de caractere que la fonction me retourne n'est pas bon car la fonction conte les retour chariot comme 2 caractere apparement.
Je reexeplique:
je tape dans ma textbox :
aaaa => la fonction LEN me retourne 4 caractère : cbon !
je tape maintenant :
aaa
a
=>la fonction LEN me retourne 6 alors qu'il n'y as que 4 caractère
je veux savoir si la fonction split ou autre peut me donner le nombre de caractere exact sans le retour chariot.
nhervagault
La list box me renvoit le nombre de caractere sur une ligne(qui est bon d'ailleur) mais moi je veux le nombre total exact de caractere de ma textbox.
Vraiment désolé j'ai du mal
si vous comprenez pas dites le moi
:)
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 22:56
ps:

comme tu debutes:

en gros , le vbcrlf c'est la touche entré, quand tu appuis sur la touche entré, on dit que le "caret" le "curseur" clavier fait un retour chariot et un saut de ligne, c'est comme les vieilles machines a ecrire. l'autre constante VB est le vbkeyreturn.

cette situation peut etre definit par code ASCII, code de caracteres, tous listes suivant des codes ( tu peux trouver de l'aide dans l'aide VB en cherchant "chr" puis "voir aussi" les codes vont de 0 a 255. certains sont reservés a ce type de touche comme la touche entré, la touche tabulation, la touche espace. La touche entré est simalé par 2 code , le code 10 et le code 13. 10 pour saut de ligne et 13 pour retour chariot.

par esemple la touche tabulation c'est le code 9

ils sont facilement utilisables en les programmant comme ceci :
Chr(10) & Chr(13) ou Chr$(10) & chr$(13)

une facon tres simple de ne pas avoir a utiliser ceci c'est de l'utiliser par les constant VB. pour les trouver tu peux activer le la touche F2, c'est l'explorateur d'objet (menu affichage et explorateur d'objet), ensuite tu peux faire une recherche en tapant un code de constante que tu te rappelles. ou alors dans la recherche tu tapes VbKey.
j'espere ne pas m'etre tromper, sinon qq'un aura bien la gentillesse de rectifier mes dires.

Liquide
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 23:02
je t'ai mis un exemple juste au dessus avec un split. Il y a une variable "compte" qui compte le nombre de caractere de chaque splitage(i) et se l'incremente a elle meme

compte = compte + len ........

en fait la fonction split va chercher tous les caracteres "vbcrlf" et prend le reste pour le placer dans un tableau "Splitage())

la grandeur de ton tableau dependra donc du nombre de ligne qui tu as "spliter".
je viens de faire un essais et ca marche tres bien

Dim splitage() As String
Dim compte As Integer
'Dim strgg As String
'strgg = Text1.Text
compte = 0 'pas necessaire mais "rassurant"
splitage() = Split(Text1.Text, vbCrLf)
For i = LBound(splitage()) To (UBound(splitage()))
compte = compte + Len(splitage(i))
Next i

Label1.Caption = compte

j'ai mis un label supplementaire qui m'affiche le nombre de caracteres.

lbound, c'est la taille la plus petite du tableau et ubound la plus grande du tableau, vb se debrouille
liquide
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
15 mai 2004 à 23:02
je t'ai mis un exemple juste au dessus avec un split. Il y a une variable "compte" qui compte le nombre de caractere de chaque splitage(i) et se l'incremente a elle meme

compte = compte + len ........

en fait la fonction split va chercher tous les caracteres "vbcrlf" et prend le reste pour le placer dans un tableau "Splitage())

la grandeur de ton tableau dependra donc du nombre de ligne qui tu as "spliter".
je viens de faire un essais et ca marche tres bien

Dim splitage() As String
Dim compte As Integer
'Dim strgg As String
'strgg = Text1.Text
compte = 0 'pas necessaire mais "rassurant"
splitage() = Split(Text1.Text, vbCrLf)
For i = LBound(splitage()) To (UBound(splitage()))
compte = compte + Len(splitage(i))
Next i

Label1.Caption = compte

j'ai mis un label supplementaire qui m'affiche le nombre de caracteres.

lbound, c'est la taille la plus petite du tableau et ubound la plus grande du tableau, vb se debrouille
liquide
0
eminemz Messages postés 19 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 22 décembre 2004
15 mai 2004 à 23:17
Liquide
Tres grand merci a toi !!!
Ca marche c genial
encore merci a toi et aux autres qui ont eu la gentillesse de repondre
:big)
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
16 mai 2004 à 01:17
... et si on en a marre du Split, on peut faire aussi :

NbreCaractères = Len(Replace(Text1.Text, vbCrLf, ""))

Explication :
Replace(Text1.Text, vbCrLf, "") remplace les vbCrLf (2 "caracères") par des chaînes de longueur nulle.
Reste plus qu'à compter les caractères restant c'est à dire trouver la longueur (Len) de la chaîne obtenue
0
Rejoignez-nous