Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1521 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Chercher une chaîne de caractères dans une liste

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Chercher une chaîne de caractères dans une liste

n°1564003
Zoltan87
Posté le 23-05-2007 à 14:45:14  profilanswer
 

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 ?

mood
Publicité
Posté le 23-05-2007 à 14:45:14  profilanswer
 

n°1564006
jpcheck
Pioupiou
Posté le 23-05-2007 à 15:02:31  profilanswer
 

tu peux donner un exemple de ce que tu cherches stp ?

n°1564008
Zoltan87
Posté le 23-05-2007 à 15:05:06  profilanswer
 

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

n°1564016
jpcheck
Pioupiou
Posté le 23-05-2007 à 15:09:58  profilanswer
 

genre :
 - piège
 - cage
 - je
 - jeux
 - jetski
 
=> nb de je = 3 ?

n°1564017
Zoltan87
Posté le 23-05-2007 à 15:10:19  profilanswer
 

oui voila, exactement :)

n°1564036
jpcheck
Pioupiou
Posté le 23-05-2007 à 15:21:46  profilanswer
 

fonctions à voir (pas toutes testées):
- split()
- strcomp()
- mid()

n°1564038
Zoltan87
Posté le 23-05-2007 à 15:23:25  profilanswer
 

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

n°1564055
jpcheck
Pioupiou
Posté le 23-05-2007 à 15:42:35  profilanswer
 

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 :)

n°1564069
MagicBuzz
Posté le 23-05-2007 à 15:51:20  profilanswer
 

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é" )

n°1564072
jpcheck
Pioupiou
Posté le 23-05-2007 à 15:53:30  profilanswer
 

merc, je trouvais plus la fameuse fonction toute faitre expres :p

mood
Publicité
Posté le 23-05-2007 à 15:53:30  profilanswer
 

n°1564075
MagicBuzz
Posté le 23-05-2007 à 15:56:17  profilanswer
 

ceci dit, l'idée du split, même si elle est bien nase, marche aussi très bien :D
 
nbocc = ubound(split(machaine, monmot)) - 1
 
c'est horrible, mais ça marche :D


Message édité par MagicBuzz le 23-05-2007 à 15:57:04
n°1564089
Zoltan87
Posté le 23-05-2007 à 16:06:26  profilanswer
 

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


Message édité par Zoltan87 le 23-05-2007 à 16:17:19
n°1564097
tegu
Posté le 23-05-2007 à 16:20:15  profilanswer
 

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.

n°1564112
Zoltan87
Posté le 23-05-2007 à 16:40:47  profilanswer
 

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

n°1564116
jpcheck
Pioupiou
Posté le 23-05-2007 à 16:44:15  profilanswer
 

ta boucle du i, fais la commencer à 1 et non pas 0

n°1564120
Zoltan87
Posté le 23-05-2007 à 16:48:57  profilanswer
 

       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

n°1564125
jpcheck
Pioupiou
Posté le 23-05-2007 à 16:55:57  profilanswer
 

vire le j et met directement 1

n°1564134
Zoltan87
Posté le 23-05-2007 à 17:06:37  profilanswer
 

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 ?

n°1564143
MagicBuzz
Posté le 23-05-2007 à 17:15:17  profilanswer
 

j'ao posté l'algo tout à l'heure :o
 
lis l'algo, et tu verras qu'aucun des bous de code ne ressemble à un pouillème de ce qu'il faut faire :spamafote:

n°1564148
MagicBuzz
Posté le 23-05-2007 à 17:19:15  profilanswer
 

Code :
  1. option explicit
  2.  
  3. dim pos, nb, lrec
  4. dim rec
  5. dim el
  6.  
  7. rec = "je"
  8. lrec = len(rec)
  9.  
  10. nb = 0
  11. for each el in list.items
  12.  pos = 1
  13.  do while instr(pos, el.text, rec) > 0
  14.    nb = nb + 1
  15.    pos = pos + lrec
  16.  loop
  17. next
  18.  
  19. msgbox(cstr(nb) & " fois " & rec & " trouvé(s)" )


 
A l'erreur de syntaxe près :spamafote:


Message édité par MagicBuzz le 23-05-2007 à 17:20:10
n°1564152
Zoltan87
Posté le 23-05-2007 à 17:23:24  profilanswer
 

merci enormément MagicBuzz, j'essaie


Message édité par Zoltan87 le 23-05-2007 à 17:28:23
n°1564153
MagicBuzz
Posté le 23-05-2007 à 17:24:22  profilanswer
 

NAN
 
"dans une boucle", "dernière trouvée", c'est du chocolat blanc ? ça implique un peu loa présence d'une boucle non ? :o (et pas sur tes items, mais dans l'item)


Message édité par MagicBuzz le 23-05-2007 à 17:24:49
n°1564169
Zoltan87
Posté le 23-05-2007 à 17:33:35  profilanswer
 

Merci énormément MagicBuzz, ca fonctionne a merveille, enfin j'ai changé .text en tostring mais c'est rien !
 
merci merci :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Chercher une chaîne de caractères dans une liste

 

Sujets relatifs
Add-in Visual Studio 2005 liste webcontrols Liste Chainée [DS niveau premiere année ingé]
in array) Comment limiter une liste de newsletter aux numéros publiés?Visual Basic : copier le contenu d'une liste dans un tableau
Convertir une chaine en déclaration de variableCharger une liste à partir d'un fichier
Afficher liste des mois[C++] Clavier virtuel - simulation caractères spéciaux
[RESOLU] chaine caractère en parametre de fonction / JavascriptTester le nombre de lettre d'une chaine de caractéres
Plus de sujets relatifs à : Chercher une chaîne de caractères dans une liste


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR