Compter les caractères d'une text box

Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
- - Dernière réponse : 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 !
Afficher la suite 

19 réponses

Messages postés
199
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
27 octobre 2006
1
0
Merci
Ben je suppose que Len(MaTextBox.text) devrai faire l'affaire.
Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
0
Merci
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 ???
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
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
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
10
0
Merci
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
Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
0
Merci
Merci pour ta reponse c cool
:big)
Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
0
Merci
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
:)
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
ps petite rectif, le vbcrlf c'est retour chariot et saut de ligne, ce qui inclus force"ment le retour chariot.
liquide
Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
0
Merci
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)
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
tu veux retirer aussi les caracteres générés par la barre d'espacement ?
liquide
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
0
Merci
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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
je ne comprend pas le principe de la consommation ?
j'ai beau faire plein d'essais ca comptabilise correctement avec le split
liquide
Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
0
Merci
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
:)
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
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
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
0
Merci
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
Messages postés
19
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2004
0
Merci
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)
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
0
Merci
... 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