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

sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 27 nov. 2009 à 18:51 - Dernière réponse : sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention
- 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.
Afficher la suite 

15 réponses

Répondre au sujet
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 28 nov. 2009 à 19:40
+3
Utile
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 ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jmf0
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 27 nov. 2009 à 19:47
0
Utile
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...
Commenter la réponse de jmf0
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 27 nov. 2009 à 19:51
0
Utile
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 )
Commenter la réponse de jmf0
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 28 nov. 2009 à 09:58
0
Utile
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
Commenter la réponse de cboulas
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 28 nov. 2009 à 11:45
0
Utile
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
Commenter la réponse de sancho12345
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 28 nov. 2009 à 12:04
0
Utile
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]
Commenter la réponse de PCPT
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 28 nov. 2009 à 12:36
0
Utile
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.
Commenter la réponse de sancho12345
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 28 nov. 2009 à 12:41
0
Utile
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)
Commenter la réponse de PCPT
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 28 nov. 2009 à 12:52
0
Utile
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
Commenter la réponse de sancho12345
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 28 nov. 2009 à 12:58
0
Utile
Euh...
C'est en quel langage, ce code ?
Commenter la réponse de jmf0
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 28 nov. 2009 à 13:01
0
Utile
... 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
Commenter la réponse de PCPT
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 28 nov. 2009 à 15:33
0
Utile
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.
Commenter la réponse de sancho12345
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 28 nov. 2009 à 18:00
0
Utile
Quel type de listbox utilises-tu donc ?
Celles de VB6 n'ont qu'une seule vraie colonne !
Commenter la réponse de jmf0
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 28 nov. 2009 à 18:44
0
Utile
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
Commenter la réponse de sancho12345
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 28 nov. 2009 à 23:08
0
Utile
Merci pour ta réponse.


Je vais essayé d' autres contrôles.


Merci.
Commenter la réponse de sancho12345

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.