Filtre en VBA
Bonjour le forum.
J’ai le module ci-dessous qui fonctionne TRES bien si je veux extraire les éléments de la colonnes « O » mais ce que je voudarit faire c’est qu’elle m’extraire toutes les informations qui sont DIFFERENTES de "ELEVES1", "ELEVES2", "ELEVES3" et "ELEVE Royan". J’ai essayé de mettre « Operator:<>xlFilterValues » à la place de « Operator:=xlFilterValues » mais ça ne merche pas.
Je ne sais pas si j’ai été claire et si un filtre dans ce sens là est faisable.
Sub filtrage_sans_eleves()
Dim i&
i = Range("J" & Rows.Count).End(xlUp).Row
'Filtre pour ne pas prendres en compte les élèves
ActiveSheet.Range("$A$2:$BA" & "$" & i).AutoFilter Field:=15, Criteria1:=Array( _
"ELEVES1", "ELEVES2", "ELEVES3", "ELEVE Royan"), Operator:=xlFilterValues
End Sub
Cordialement.
Bonjour,
exemple en PJ
Sub FiltreInverseListe()
Set d = CreateObject("scripting.dictionary")
d.CompareMode = vbTextCompare
For Each c In Range("E2:E" & [E65000].End(xlUp).Row)
d(c.Value) = ""
Next c
Set d2 = CreateObject("scripting.dictionary")
d2.CompareMode = vbTextCompare
For Each c In Range("B2:B" & [B65000].End(xlUp).Row)
If Not d.exists(c.Value) Then d2(c.Value) = ""
Next c
ActiveSheet.Range("$A$1:$B$100").AutoFilter Field:=2, Criteria1:=d2.keys, Operator:=xlFilterValues
End SubCeuzin
Merci ceuzin pour la petite macro. Je n'ai pas réussi à l'adapter à mon fichier mais j'y travaille.
Il faudrait que pour les valeurs à exclure du filtre que la macro les récupères dans la feuil1 tandis que que le filtre se fait en feuil2. Ensuite je ne sais pas comment je définis le DIM des variables c, d, d2.
Bon j'essayerai de voir tout ça demain.
Cordialement.
Bonjour le forum,
J'avais oublié de mettre en résolu ma question suite à l'adaptation du code que Ceuzin m'a transmis. Merci à lui. Pour info je mets le code adapté.
Sub FiltreInverseListe()
Dim f1 As Worksheet
Dim f2 As Worksheet
Dim d As Variant
Dim d2 As Variant
Dim c As Variant
Dim i&
i = Range("J" & Rows.Count).End(xlUp).Row
'Filtre pour ne prendre en compte uniquement que les cellules en fond rouge
ActiveSheet.Range("$A$2:$BA" & "$" & i).AutoFilter Field:=14, Criteria1:=RGB(255 _
, 0, 0), Operator:=xlFilterCellColor
'Filtre pour ne pas sélectionner certaines organisme de formations
Set f1 = Sheets("LEGENDE")
Set d = CreateObject("scripting.dictionary") ' Liste à ne pas sélectionner
d.CompareMode = vbTextCompare
For Each c In f1.Range("F56:F" & "$" & i)
d(c.Value) = ""
Next c
Set f2 = Sheets("doublon(s)")
Set d2 = CreateObject("scripting.dictionary") ' liste complémentaire
d2.CompareMode = vbTextCompare
For Each c In f2.Range("O2:O" & "$" & i)
If Not d.exists(c.Value) Then d2(c.Value) = ""
Next c
ActiveSheet.Range("$A$2:$BA" & "$" & i).AutoFilter Field:=15, Criteria1:=d2.keys, Operator:=xlFilterValues
End SubCordialement.