eminemz
Messages postés19Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention22 décembre 2004
-
15 mai 2004 à 17:55
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 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 !
A voir également:
Compter caractères
Nombre de caractères en ligne - Meilleures réponses
eminemz
Messages postés19Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention22 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 ???
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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.
eminemz
Messages postés19Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention22 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)
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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
eminemz
Messages postés19Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention22 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
:)
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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.
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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
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