Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

ChTi160

XLDnaute Barbatruc
Mdr
je ne l'ai pas trouvé ! lol
mais je vais t'avouer que je n'ai pas cherché Lol
Mdr Patrick
Conseil Lol
Tu vas dans la Boite à Outils , et là ! tu en as une lol
mais Bon !
jean marie
 

ChTi160

XLDnaute Barbatruc
mdr
ça fait du Bien !
Merci Patrick
je crois avoir lu qu'il y avait auparavant une ListBox qu'il a remplacé par une ListView !
il restait même des label qui servaient d’entêtés de Colonne .
jean marie
 

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
 

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 !!!

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

 
Dernière édition:

jmfmarques

XLDnaute Accro
Bonjour Patrick
J'ai quant à moi exposé d'emblée mon opinion (beaucoup plus haut)
En ajoutant que si l'on ne veut pas modifier la feuille source, il est toujours possible d'utiliser une feuille tremplin.
 

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

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
 

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

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
213
Réponses
17
Affichages
845
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…