Comparer une colonne avec une liste de choix multiple

Bonjour Messieurs Dames,

J'ai un problème que je n'arrive pas à résoudre, pourriez vous m'aider svp ?

J'ai une UserForm contenant une listBox,et je voulais savoir si il existait un code permettant de comparer les données sélectionnées dans ma listBox avec les données d'une colonne de mon onglet.

J'arrive à réaliser ma comparaison avec une sélection unique, mais pas une sélection multiple

Le code utilisé mais qui ne fonctionne pas :

For J = 3000 To 2 Step -1

'ListeRestrictions

If ListeRestrictions = "" Then

ElseIf .Range("A" & J) <> Me.ListeRestrictions Then

.Rows(J).Delete

End If

Next J

Pour info ListeRestrictions est ma listBox.

Dans la ligne ElseIf .Range("A" & J) <> Me.ListeRestrictions Then, "Me.ListeRestrictions " à l'air de ne pas fonctionner en sélection multiple (contrairement à la sélection unique).

Svp auriez-vous le bon code ?

Merci d'avance

Bonjour

Sans fichier

Si j'ai compris

Tu cherches si les mots sélectionnés sont présents dans la colonne A et dans l'affirmative tu supprimes la ligne

Essayes

Private Sub CommandButton1_Click()
Dim I As Integer
Dim Cel As Range

  With Me.ListeRestrictions
    For I = 0 To .ListCount - 1
      If .Selected(I) = True Then
        Set Cel = Range("A2:A3000").Find(what:=.List(I), LookIn:=xlValues, lookat:=xlWhole)
        If Not Cel Is Nothing Then
          Rows(Cel.Row).Delete
        End If
      End If
    Next I
  End With
End Sub

Arf oui désolé pour la pièce jointe (je viens de la rajouter)

Et merci encore une fois pour ta réponse rapide

J'ai essayé ton code mais ça ne fonctionne pas à 1ère vue (je me suis juste occupé de la colonne Restrictions)

Bonjour

Essayes ce code

Aux tests les lignes sélectionnées sont bien enlevées

Private Sub boutonRechercher_Click()
Dim I As Integer
Dim Cel As Range

  ' copier dans "résultat recherche"
  Sheets("Database").Cells.Copy Sheets("Résultat de recherche").Range("A1")

  With Me.ListeRestrictions
    For I = 0 To .ListCount - 1
      If .Selected(I) = True Then
        Do
          Set Cel = Sheets("Résultat de recherche").Range("A2:A3000").Find(what:=.List(I), LookIn:=xlValues, lookat:=xlWhole)
          If Cel Is Nothing Then Exit Do
          Sheets("Résultat de recherche").Rows(Cel.Row).Delete
        Loop
      End If
    Next I
  End With

  recherche.Hide
  Sheets("Résultat de recherche").Select

End Sub

Bonjour

Ton code fonctionne effectivement

Mais par contre j'ai mal exprimé mon besoin, en fait je cherche à supprimer tout ce qui est différent de ce que j'ai sélectionné afin qu'il ne reste plus que ce que j'ai sélectionné.

En gros c'est une fonction recherche à multi critère

Par exemple :

si j'ai dans ma liste restriction Vide / Oui / Non / peut-être

Que je sélectionne Oui et peut-être

Alors tout ce qui n'a pas été sélectionné est supprimé (en gros : Non et cellules vides), et il ne me reste que les Oui et Peut-être.

Du coup ce que j'ai essayé de faire avec le code que tu m'as donné :

If .Selected(I) = False Then --> mais ça boucle

If .Selected(I) <> True Then --> ça boucle encore

Find(what<>.List(I) --> il ne se passe rien

Find(what not:=.List(I) --> erreur de compilation

Désolé Banzai, je ne suis vraiment pas doué es-ce que tu aurais une solution stp ?

Et après recherches sur internet et l'aide excel, je trouve comment utiliser la fonction Find, mais pas la fonction What (je voulais faire une sorte de what not ou what <>)

Merci encore pour ton aide, c'est super sympa !

(J'ai rajouté sur ce poste le fichier en V2 avec ton code)

Bonjour

On ne peut pas travailler de la même manière, parce que si "Non" et "Oui" sont sélectionnés, lors de la recherche de <> "Oui" on effacera les "Non"

Ce qu'il faudrait faire c'est rechercher <> "Oui" ET <> "Non"

A tester une autre façon de faire

Génial !!!

Ca fonctionne

Tu es encore venu me secourir dans mes macros

Merci 1000 fois ! (et je dois avouer que jamais je n'aurais pu trouver vu le level de la macro)

Rechercher des sujets similaires à "comparer colonne liste choix multiple"