Comment compté le nombre de lettres ds un label sans les points et virgules

Résolu
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010 - 22 avril 2009 à 12:08
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010 - 9 mai 2009 à 11:57
bonjour a tous j'aie un petit soucis car j'arrive a compté le nombre de mot et de lettre dans un label mais je n'arrive pas
a
ne as compté dans mon calcul les caractères spéciaux (, ; . * ). Donc
pour dire simple seulement compté les lettres sans les points et
virgules

NbrMot = (UBound(Split(lblPhrase.Caption, " ", , vbTextCompare)) + 1)
   
    NbrLettre = Len(lblPhrase.Caption)
    NbrLettre = (NbrLettre - (NbrMot - 1))

merci d'avance bonne journée

12 réponses

hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
22 avril 2009 à 13:49
Bonjour,
Tu fais une boucle dans laquelle tu regardes le code ascii du caractére
Si le code n'est pas celui d'une lettre (ou d'un chiffre comme tu n'as pas précisé) alors c'est un caractere spécial et tu ote 1 de la longueur de ta chaine

dim i as integer
dim lgFinale as integer

lgFinale = len(tachaine)

for i=1 to i=len(tachaine)
   if (KeyAscii>30 and KeyAscii<39) or (KeyAscii>41 and KeyAscii<5A) OR  (KeyAscii>61 and KeyAscii<7A) then
   lgFinale = lgfinale -1
   end if   
next

Code non Vérifié
HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
3
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010
22 avril 2009 à 14:07
merci beaucoup pour ta reponse mais j'aie trouvé un peux plus facile lolll enfin peut etre un peux moins propre que toi ve regarder a ca

NbrMot = (UBound(Split(lblPhrase.Caption, " ", , vbTextCompare)) + 1)
    virgule = (UBound(Split(lblPhrase.Caption, ",", , vbTextCompare)) + 1)
    points = (UBound(Split(lblPhrase.Caption, ".", , vbTextCompare)) + 1)
    apos = (UBound(Split(lblPhrase.Caption, "'", , vbTextCompare)) + 1)
    NbrLettre = Len(lblPhrase.Caption)
    NbrLettre = (NbrLettre - (NbrMot - 1) - (virgule - 1) - (points - 1) - (apos - 1))
    MsgBox " vous avez " & NbrMot & " mots et " & NbrLettre & " lettres " & virgule - 1 & " virgule " & points - 1 & " point " & apos - 1 & " apostrophe"
3
cs_Papymuzo Messages postés 169 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 17 août 2010 1
22 avril 2009 à 15:06
Hello,

Sinon il y a une autre solution :

Tu crées une chaine de caractères nommée Temp :

                        Dim Temp As String

Puis tu enlèves les points, virgules, astérisques ou autres comme suit :

                        Temp = lblPhrase.Text 'On met le texte dans la variable temporaire
                        Temp = Replace(Temp, ".") 'On vire les points
                        Temp = Replace(Temp, ",") 'On vire les virgules
                        '... etc
                        NbrLettres = Temp.Length 'On retourne la longueur de la chaîne

Sinon, tu peux passer un à un les caractères dans une boucle allant de 1 à 255 (code AscII).
Si le code AscII de la lettre ne correspond pas à une lettre de l'alphabet (compris entre tel et tel code), alors sa fait -1 à la longueur.

Vla' ;)

-Papymuzo-
3
linasteph Messages postés 153 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 juillet 2009 1
22 avril 2009 à 13:17
salut,

tu peux dans un premier temps supprimer les caractères spéciaux de ta chaine et ensuite prendre sa longueur.

@+
0

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

Posez votre question
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010
22 avril 2009 à 13:27
oui j'aie deja essayé mais le problème c est que j'ai eu une formation accéléré en vb et que je ne sais pas trop comment m y prendre
0
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010
22 avril 2009 à 13:49
c est bon c est trouver
0
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
22 avril 2009 à 14:33
Dans ton traitement tu prends pas en compte tous les autres caracteres spéciaux.
Quand tu realise un programme il faut savoir envisager toutes les possibilités par exemple comment tu gère le point d'exclamation? volontaire ou non comme la parenthèse etc...

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010
22 avril 2009 à 14:36
oui c est vrai tu tout a fait raison je vais utilisé ta méthode
j'espère que je rencontrerais pas trop de problème avec merci beaucoup
0
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
22 avril 2009 à 14:48
de rien :)

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010
22 avril 2009 à 14:49
Bizarement il le prend po le A du 5A et 7A
0
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
22 avril 2009 à 14:57
Autant pour moi le keyascii te demande un integer.
Regarde le code ascii et prends la valeur correspondante

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
siciliano99 Messages postés 22 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 janvier 2010
9 mai 2009 à 11:57
merci beaucoup j'ai plutot etulisé cette solution la lollll
0
Rejoignez-nous