Compter le nombre de mots identiques dans listbox? [Résolu]

Signaler
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012
-
sancho12345
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012
-
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

Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
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 ...
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
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...
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
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 )
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
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
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

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
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
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]
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

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.
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
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)
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

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
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
Euh...
C'est en quel langage, ce code ?
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
... 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
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

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.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
Quel type de listbox utilises-tu donc ?
Celles de VB6 n'ont qu'une seule vraie colonne !
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

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
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

Merci pour ta réponse.


Je vais essayé d' autres contrôles.


Merci.