Chercher une chaîne de caractères dans une liste - VB/VBA/VBS - Programmation
Marsh Posté le 23-05-2007 à 15:05:06
oui biensur,
ma liste est remplie de texte par exemple, comme des expressions, et j'aimerais par exemple, chercher dans cette liste, le nombre de fois qu'apparait le mot "je" dans toute la liste
Marsh Posté le 23-05-2007 à 15:09:58
genre :
- piège
- cage
- je
- jeux
- jetski
=> nb de je = 3 ?
Marsh Posté le 23-05-2007 à 15:21:46
fonctions à voir (pas toutes testées):
- split()
- strcomp()
- mid()
Marsh Posté le 23-05-2007 à 15:23:25
tu peux m'expliquer comment s'en servir ? parceque un souci notamment, c'est pour dire que l'on compare une chaine prédéfinie, ( ici "je" ) et la chaine contenue a l'indice courant de ma boucle de passage, et la j'ai du mal
Marsh Posté le 23-05-2007 à 15:42:35
j'ai trouvé mieux : la fonction like qui te retourne true ou false si l'élément testé contient.
tape like dans VBE puis F1
Marsh Posté le 23-05-2007 à 15:51:20
euh...
instr()
=> il te donne la position de la première occurence trouvée
=> il prends en paramètre à partir d'où tester
=> donc tu vais un appel dans une boucle en mettant la position de départ = dernière trouvée + len(mot cherché) tant que ça ne retourne pas 0 (en VB, une chaine commence au caracvtères 1, donc 0 signifie "non trouvé" )
Marsh Posté le 23-05-2007 à 15:53:30
merc, je trouvais plus la fameuse fonction toute faitre expres
Marsh Posté le 23-05-2007 à 15:56:17
ceci dit, l'idée du split, même si elle est bien nase, marche aussi très bien
nbocc = ubound(split(machaine, monmot)) - 1
c'est horrible, mais ça marche
Marsh Posté le 23-05-2007 à 16:06:26
merci
mais pour la fonction instr(), cela me donne
For i = 0 To LstDetailClicCommande.Items.Count - 1
InStr(LstDetailClicCommande.Items(i).ToString, "machaine", CompareMethod.Text, CompareMethod.Text, j)
Next
pour les comparemethod c'est ce que j'ai vu apparaitre a l'ecran comme parametre.
et je ne vois pas ou dire a partir de quel indice chercher, en fait je ne comprend pas comment compter le nombre de fois qu'une chaine apparait avec, peux tu m'en expliquer d'avantage s'il te plait ? (ui je debute si je n'avais pas précisé ) merci beaucoup
Marsh Posté le 23-05-2007 à 16:20:15
Puisque tu débutes, commence par prendre de bonnes habitudes et cherche la fonction InStr() dans l'aide en ligne VBA.
Tu devrais comprendre vite ton problème.
Marsh Posté le 23-05-2007 à 16:40:47
voila, je viens de le faire, j'ai compris alors pour start, et j'ai donc fait ceci, juste pour voir si ca fonctionnait
j = 1
For i = 0 To LstDetailClicCommande.Items.Count - 1
j = InStr(j, LstDetailClicCommande.Items(i).ToString, "machaine" )
Next
mais à l'éxécution, j'ai un message me disant que start ne peut etre egal à 0, alors qu'ici il vaut 1 :s
Marsh Posté le 23-05-2007 à 16:48:57
j = 1
For i = 1 To LstDetailClicCommande.Items.Count - 1
j = InStr(j, LstDetailClicCommande.Items(i).ToString, "classique" )
Next
j'ai donc mis i et j à 1, mais je rencontre toujours le message "start doit être supérieur à 0" :s
Marsh Posté le 23-05-2007 à 17:06:37
mais si je fais ca, comment est ce que le programme va savoir compter le nombre de fois que la chaine apparait, je pourrais plus rajouter de compteur, si ?
Marsh Posté le 23-05-2007 à 17:15:17
j'ao posté l'algo tout à l'heure
lis l'algo, et tu verras qu'aucun des bous de code ne ressemble à un pouillème de ce qu'il faut faire
Marsh Posté le 23-05-2007 à 17:19:15
Code :
|
A l'erreur de syntaxe près
Marsh Posté le 23-05-2007 à 17:23:24
merci enormément MagicBuzz, j'essaie
Marsh Posté le 23-05-2007 à 17:24:22
NAN
"dans une boucle", "dernière trouvée", c'est du chocolat blanc ? ça implique un peu loa présence d'une boucle non ? (et pas sur tes items, mais dans l'item)
Marsh Posté le 23-05-2007 à 17:33:35
Merci énormément MagicBuzz, ca fonctionne a merveille, enfin j'ai changé .text en tostring mais c'est rien !
merci merci
Marsh Posté le 23-05-2007 à 14:45:14
Bonjour à tous !
j'aimerais chercher combien de fois apparaît une chaîne de caractères précise dans une listebox remplie, mais je n'arrive pas à trouver comment on fait, j'ai demander à des amis qui eux n'ont plus n'arrivaient pas (à croire que l'on ne chercher jamais de chaîne de caractères dans une liste ) et google n'a pas été mon ami sur ce coup.
Pouvez-vous m'aider s'il vous plait ?