Compter le nombre de mots identiques dans listbox?

Résolu
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012 - 27 nov. 2009 à 18:51
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012 - 28 nov. 2009 à 23:08
Bonjour à tous,


Comment puisse-je faire pour dans un listbox1 compter le nombre de mots identiques et ressortir ces mots dans une listbox2 ?


EX :
Listbox 1

Machine
Machine
Truc
Truc
Bidule
bidule
Avant



Listbox 2

2 Machine
2 Truc
2 Bidule
1 Avant


Merci par avance pour votre aide.

15 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
28 nov. 2009 à 19:40
Il est possible d'obtenir, dans une listbox de VB6, un affichage (purement visuel, donc) en plusieurs colonnes. Il n'est par contre pas possible d'affecter un index à ces "colonnes"-là en vue d'une incrémentation de leur valeur, sans monter une usine à gaz.
Intéresse-toi à d'autres contrôles, dans ce cas ! Une listview, par exemple ...
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
27 nov. 2009 à 19:47
Bonjour,

Puisque (comme tout le donne à penser puisquetu as choisi le présent thème : VB6), tu développes sous VB6 :
Ta listbox est assortie d'une propriété Sorted (à utiliser)
Il ne te reste ensuite plus qu'à la parcourir du 1er index au dernier et de comparer l'index avec l'index + 1 ===>>> si égale ===>> tu ajoutes 1 au compteur... etc...
A toi, avec ce qui parait n'être... qu'un exercice scolaire...
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
27 nov. 2009 à 19:51
Ceci étant exprimé (et ta listbox2 ne m'interdit pas, bien au contraire, d'y penser), la démarche serait totalement différente avec une listbox d'Excel et VBA ... (mais heureusement que tu développes sous VB6 et non sous VBA/Excel )
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
28 nov. 2009 à 09:58
Salut,

Juste pour compléter les posts précédent : Lors du scan de tes textbox, je te conseil de convertir toutes lignes de textbox en Majuscule ou Minuscule et d'en retirer tout espaces, ainsi tu peux comparer à coup sûr les valeurs

car c'est bien connu : Maison <> maison <> MAISON...

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0

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

Posez votre question
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
28 nov. 2009 à 11:45
Merci pour vos réponses,

J'ai essayé ce code mais cela ne fonctionne pas ?

Avez-vous une idée ?

-----------
Dim i As Integer, j As Integer
List1.Clear ' on vide List1

For j = 0 To List1.ListIndex
For i = 0 To List1.ListIndex + 1

If List1.List(i) = List1.List(j) Then List2.AddItem List1

Next i
Next j

-----------------------

Merci à vous
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 nov. 2009 à 12:04
salut,

sancho12345 -> si tu vides la list1, tu comptes comparer quoi?....


http://www.codyx.org/snippet_supprimer-doublons-tableau-chaines_653.aspx#1941


Private Sub Command1_Click()
    Dim a() As String, i As Integer
    ReDim a(List1.ListCount)
    For i = 0 To List1.ListCount
        a(i) = List1.List(i)
    Next i
    
    If RemoveDuplicatedItemsFromArray(a) Then
        For i = 0 To UBound(a)
            List2.AddItem a(i)
        Next i
    Else
        MsgBox "aucun élément!"
    End If
End Sub



[hr]
0
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
28 nov. 2009 à 12:36
Bonjour PCPT,

Oui effectivement, mais cela ne fonctionne pas mieux.


J'ai essayé ton code en intégrant ta fonction
"Function RemoveDuplicatedItemsFromArray(ByRef aArray() As String) As Long"
mais j'ai beaucoup de message d'erreur " erreur de compilation "

Dois-je adapter ton code, car actuellement j'ai uniquement fais un copier coller. est-ce la bonne procédure?



merci.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 nov. 2009 à 12:41
si tu es bien en VB6 il n'y a aucune erreur

montre le code complet?
peut-être as-tu copié l'exemple avec (qui n'est bien sûr pas nécessaire)
0
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
28 nov. 2009 à 12:52
A mon avis cela le problème c'est moi.

Voilà la fonction que j'ai copié:

FonctionRemoveDuplicatedItemsFromArray (ByRef aArray () As String) As Long
'aArray Tableau A dédoublonner, Peut être vide ou non dimentionné, NE Doit contrenir pas d'élément CHR $ (0)
'items fonction retourne le nombre d'
DimasBuff ()As String, LCountAs Long, I As Long, J As Long, L As Long

Si((Pas(PasaArray)) =0)PuislCount = 0 Autre lCount = UBound(aArray) -- LBound(aArray) + 1
SilCountPuis
SilCount =1Puis
«Rien à faire
RemoveDuplicatedItemsFromArray = 1
Autre
«Travaille en tampon
= asBuff aArray
L =LBound(asBuff)
Pouri = lÀUBound(asBuff) -- 1
Pourj = i +1ÀUBound(asBuff)
Si(asBuff (i) asBuff (j)) Puis asBuff (j) vbNullChar
Suivantj
Suivantje

«Sauve
j = l --1
Pouri = lÀUBound(asBuff)
If Not(asBuff (i) = vbNullChar) Puis
j = j +1
aArray (j) = asBuff (i)
End If
Suivantje
'Resize + retour
ReDim PreserveaArray (LÀj)
RemoveDuplicatedItemsFromArray = UBound(aArray) - L + 1
End If
End If
EffacerasBuff
End Function



Merci
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
28 nov. 2009 à 12:58
Euh...
C'est en quel langage, ce code ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 nov. 2009 à 13:01
... pourquoi toutes les instructions VB6 sont passées en français?
avec des syntaxes plus que bizarres...


je ne peux pas copier/coller à ta place
0
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
28 nov. 2009 à 15:33
Oui effectivement cela va bien mieux comme ceci.
J'avais le traducteur google en français d'activé ?

Ton code fonctionne bien mais je n'ai toujours pas la quantité, en chiffre, du nombre de mots identique.



EX :
Listbox 1

Machine
Machine
Truc
Truc
Bidule
bidule
Avant



Listbox 2

Machine 2
Truc 2
Bidule 2
Avant 1

Dans la listbox2 j'aimerais avoir dans listbox2.additem les mots comme Machine Truc bidule et avant et dans colonne 2 de la Listbox2 avoir la quantité correspondante 2, 2, 2 ,1.

Je pense que ma question était mal posée à la base.


Merci.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
28 nov. 2009 à 18:00
Quel type de listbox utilises-tu donc ?
Celles de VB6 n'ont qu'une seule vraie colonne !
0
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
28 nov. 2009 à 18:44
D'accord.

Ma question initiale était : Comment puisse-je faire pour dans un listbox1 compter le nombre de mots identiques et ressortir ces mots dans une listbox2 ?

J'ai posé cette sans vraiment savoir si c'était possible.

D'après toi donc sous VB6 ce n'est pas possible d'écrire dans la deuxième colonne d'un listbox ?



merci
0
sancho12345 Messages postés 131 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 18 mars 2012
28 nov. 2009 à 23:08
Merci pour ta réponse.


Je vais essayé d' autres contrôles.


Merci.
0
Rejoignez-nous