Comment compté le nombre de lettres ds un label sans les points et virgules [Résolu]

Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
- - Dernière réponse : 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
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
271
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de hellangel777
Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
3
Merci
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"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de siciliano99
Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
1
3
Merci
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-

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Papymuzo
Messages postés
153
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 juillet 2009
1
0
Merci
salut,

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

@+
Commenter la réponse de linasteph
Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
0
Merci
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
Commenter la réponse de siciliano99
Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
0
Merci
c est bon c est trouver
Commenter la réponse de siciliano99
Messages postés
271
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
0
Merci
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
Commenter la réponse de hellangel777
Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
0
Merci
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
Commenter la réponse de siciliano99
Messages postés
271
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
0
Merci
de rien :)

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
Commenter la réponse de hellangel777
Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
0
Merci
Bizarement il le prend po le A du 5A et 7A
Commenter la réponse de siciliano99
Messages postés
271
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 novembre 2013
0
Merci
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
Commenter la réponse de hellangel777
Messages postés
22
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 janvier 2010
0
Merci
merci beaucoup j'ai plutot etulisé cette solution la lollll
Commenter la réponse de siciliano99