Microsoft 365 Supprimer doublons après recherche dans la ListBox

Jems85

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau sur le forum, donc si je fais quelques erreure lors de mon post, désolé d'avance :)

Alors j'explique mon problème :
J'ai alimenté une ListBox et créer un TextBox de recherche (recherche la valeur sur 2 colonnes), sans souci jusqu'à la.
Le problème c'est lorsque la valeur est dans les 2 colonnes, il m'affiche à double et je n'arrive toujours pas à trouver de solution malgrès que j'ai essayé d'adapter plusieurs code différent trouvé sur le net.

Voici mon bout de code de la ListBox :

VB:
Private Sub tbRecherche_Change()
Dim DerLigne&, Ligne&
ListBox1.Clear
 
With Worksheets("MaFeuille")
    DerLigne = .Cells(Rows.Count, 2).End(xlUp).Row
    For Ligne = 4 To [B65000].End(xlUp).Row

        With .Cells(Ligne, 2) 'recherche sur la 2ème colonne
            If .Value <> 0 Then
                If InStr(LCase$(.Value), LCase$(tbRecherche)) > 0 Then
                    ListBox1.AddItem .Value
                    ListBox1.List(ListBox1.ListCount - 1, 1) = .Offset(0, 2).Value
                    ListBox1.List(ListBox1.ListCount - 1, 2) = .Offset(0, 5).Value
                    'ListBox1.ColumnWidths = "250pt;60pt;60pt"
                End If
            End If
        End With
        With .Cells(Ligne, 3) 'recherche sur la 3ème colonne
            If .Value <> 0 Then
                If InStr(LCase$(.Value), LCase$(tbRecherche)) > 0 Then
                    ListBox1.AddItem .Value
                    ListBox1.List(ListBox1.ListCount - 1, 0) = .Offset(0, -1).Value
                    ListBox1.List(ListBox1.ListCount - 1, 1) = .Offset(0, 1).Value
                    ListBox1.List(ListBox1.ListCount - 1, 2) = .Offset(0, 4).Value
                    'ListBox1.ColumnWidths = "250pt;60pt;60pt"
                End If

            End If
        End With
    Next Ligne
End With
If Me.tbRecherche = "" Then Call test
End Sub

Après avoir alimenté la ma ListBox faudrait que je fasse un check et supprimer les doublons.

Merci pour votre aide.
Bonne journée
Jems
 

patricktoulon

XLDnaute Barbatruc
re
oui ChTi160 je m'en suis douté
comment veux tu travailler avec un fichier pareil ?
des mises a jours partielles
des codes event qui sont obsolètes
une incompréhension totale de son environnement

et tout ça pour trier les doublons d'une listbox
alors qu'il est très simple de boucler a reculons sur une listbox et tester le match (0 à index boucle -1)
si correspond pas à index boucle =suppression Terminé!!!!
ou au pire une bouclette avec un dico

bref je suis en silence ,aux vus des codes ça donne pas envie de faire le ménage LOL:p;)
 

patricktoulon

XLDnaute Barbatruc
RE
hoh t' inquiet'
je trouve dommage que personne n'intervienne pour arrêter le massacre c'est tout
et je t'assure que je suis le post depuis le début j'ai rien dis jusqu’à maintenant
mais par acquis de conscience je ne peux plus laisser le demandeur qui a l'air de débuter aller dans ce sens c'est pas lui rendre service

et depuis quand on tri les doublons dans un listbox ou même un listview
perso je préfère la remplir sans doublons
surtout que rempli a partir d'une plage , les méthodes sont bien plus accessibles pour un débutant
il y a des exemples a foison sur le forum

bon allez en mode observation ;)
et qu'on me nettoie ce fichier sinon je vais sévir !!!:p:p:p:p:p

edit:au purée en plus je viens de voir le module hook pour le scroll de la listbox qui n'existe toujours pas

FR-TUTO: comment changer l'icone de la corbeille - YouTube
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour jacques
oui ou utiliser une variables tableau
tiens en fouillant dans mes archive j'ai retrouvé un vieux truc de 2011
suppression de doublons dans une listbox à une colonne
c'est on ne peut plus simple ;)
VB:
Private Sub CommandButton1_Click()
    With ListBox1
        For i = .ListCount - 1 To 0 Step -1
            ListBox1.Value = .List(i)
            If .ListIndex <> i Then .RemoveItem (i)
        Next
    End With
End Sub

Private Sub UserForm_Activate()
    ListBox1.List = Range("A1:A12").Value
End Sub
 

Jems85

XLDnaute Nouveau
Bonjour jems85
Bonjour le Fil cp4 ,Patrick
Bonjour le Forum
Une approche perfectible Lol
je passe par le Tableau des Données , pour la recherche plutôt que par La méthode "Find"
Jean marie

Salut,

Merci ça à l'air parfait avec ta méthode de recherche, je vais l'adapter pour le mettre dans mon fichier original.

Je vais rester sur la ListView au lieu de la ListBox, je pense que ça vient plus compliqué de faire la même chose mais avec une ListBox même si la listBox risque de fonctionner sur plus de machine.

Merci encore à toi
 

Jems85

XLDnaute Nouveau
re
oui ChTi160 je m'en suis douté
comment veux tu travailler avec un fichier pareil ?
des mises a jours partielles
des codes event qui sont obsolètes
une incompréhension totale de son environnement

et tout ça pour trier les doublons d'une listbox
alors qu'il est très simple de boucler a reculons sur une listbox et tester le match (0 à index boucle -1)
si correspond pas à index boucle =suppression Terminé!!!!
ou au pire une bouclette avec un dico

bref je suis en silence ,aux vus des codes ça donne pas envie de faire le ménage LOL:p;)
Salut,

Merci tout de même de t'être penché sur mon problème mais si tu es assez critique ;) et même un peu trop.
Si il était facile de boucler à reculons.... je n'aurais pas fait appel au forum :cool:

Sur ce fichier de test, j'ai fais plusieurs modif, à la base j'utiliser une ListBox mais comme je n'arrivais pas à faire ma recherche comme il faut avec mon TextBox, j'ai opté pour modifier tout ça en ListView et je n'ai pas encore tout enlever les éléments inutiles car je faisait encore plein d'essai entre ListBox et ListView (j'avais l'un a côté de l'autre pour tester) et j'ai supprimer seulement quelque truc pour mettre le fichier en ligne ici.
Donc c'est pour cela que y a plein d'informations "inutiles".

Merci quand même o_O
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Je vais rester sur la ListView au lieu de la ListBox, [B]je pense que ça vient plus compliqué de faire la même chose mais avec une ListBox même si la listBox risque de fonctionner sur plus de machine.[/B]
ben tu te fait une fausse idée tu peux me croire
les seuls avantages que peux apporter le listview c'est le sort par colonne dont elle est équipé et le colonne header paramétrable
d'ailleurs tu utilise le kick sort function bien connue inutilement puisque le listview en est déjà équipé


et comme cp4 beaucoup ne voudrons ou ne pourront pas installer pas de ce composant
ce qui fait que ton fichier sera tout bonnement inutilisable sur certains pc

et entre nous
Si il était facile de boucler à reculons.... je n'aurais pas fait appel au forum
c'est même pas une question vba pour comprendre ce principe
si le même que le dernier se trouve avant supprimer le dernier et ainsi de suite à reculons
c'est juste logique


A méditer ;)
 
Dernière édition:

Jems85

XLDnaute Nouveau
re
VB:
Je vais rester sur la ListView au lieu de la ListBox, [B]je pense que ça vient plus compliqué de faire la même chose mais avec une ListBox même si la listBox risque de fonctionner sur plus de machine.[/B]
ben tu te fait une fausse idée tu peux me croire
les seuls avantages que peux apporter le listview c'est le sort par colonne dont elle est équipé et le colonne header paramétrable
et comme cp4 beaucoup ne voudrons ou ne pourront pas installer pas de ce composant
ce qui fait que ton fichier sera tout bonnement inutilisable sur certains pc
A méditer
Merci pour ta réponse.

Je vais essayer de mettre mon fichier un peu plus propre avec la ListBox et je le remet ici et comme ça tu sera un peu plus content lorsqu'il sera nettoyé ;) et tu pourra m'apporter peut-être ton aide :cool:
 

Jems85

XLDnaute Nouveau
à la bonne heure ;)
Voilà, est-ce que c'est un peu plus propre ou toujours pas assez?

Donc sur ce fichier, le problème est le suivant :
- Recherche seulement sur la colonne 2 de mon tableau excel au lieu des colonnes 2 et 3 (la Sub avec la tbRecherche2, recherche sur 2 colonnes mais double les lignes où il a trouvé le résultat dans les 2 colonnes
- L'index change lorsqu'il recherche, donc ça ne correspond pas au bon article lorsqu'il a joute la quantité

Merci à vous tous
 

Pièces jointes

  • Q23 V2.6 ListBox.xlsm
    88.4 KB · Affichages: 8

Discussions similaires

Réponses
4
Affichages
165
Réponses
17
Affichages
760