Re : VBA - Commande pour filtrer avec plusieurs critères
Re-bonjour,
j'ai testé la méthode proposée par Boisgontier, que je remercie une fois encore au passage.
J'ai tenté d'adapter la formule à ma macro. Sans grand succès
....
Voici mon code (je ne vous mets que la partie concernant le filtre).
Je l'ai repris en pas à pas détaillé et c'est la formule de tri avancé qui ne fonctionne pas :
' J'ajoute 3 lignes au-dessus de mon tableau pour créer ma liste et la formule
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
' Je crée ma liste avec mes 5 valeurs de B2 à F2
Range("A2").Select
ActiveCell.FormulaR1C1 = "liste"
Range("B2").Select
ActiveCell.FormulaR1C1 = "1000"
Range("C2").Select
ActiveCell.FormulaR1C1 = "1170"
Range("D2").Select
ActiveCell.FormulaR1C1 = "1200"
Range("E2").Select
ActiveCell.FormulaR1C1 = "1220"
Range("F2").Select
ActiveCell.FormulaR1C1 = "1245"
Range("B2:F2").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ActiveWorkbook.Names.Add Name:="liste", RefersToR1C1:="=SUIVIFMP!R2C2:R2C6"
' Je crée ma zone "formule" dans les cellules I2:J2
Range("I2").Select
ActiveCell.FormulaR1C1 = "formule"
Range("J2").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
' J'intègre le filtre avancé
' En colonne H, je trouve mes valeurs NATCOD ("FHO", "FRE" et "FHR")
' En colonne J, je trouve mes valeurs MNTUNI
' la variable ligneFin = ActiveCell.Row (Numéro de ligne de mon curseur)
[J2].Formula = "=and(countif(liste,J5)=0,h5=""FHO"")"
Range("A4:m" & ligneFin).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("i2:j2"), Unique:=False
' ==> Après cette commande, la valeur qui s'affiche dans la cellule J2 = FAUX
Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase"). _
Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
' ==> Le filtre est alors supprimé et toutes les valeurs du tri "FHO" sont conservées quel que soit le montant (FAUX / VRAI)
ActiveSheet.ShowAllData
' ==> Le message d'erreur suivant s'affiche :
' ==> Erreur d'exécution '1004'
' ==> La méthode Showdata de la classe Worksheet a échoué
J'avoue que je ne vois pas trop ce qui bloque, mais j'ai forcément commis une erreur quelque part.
Voyez-vous ce qui pose problème ?
Merci d'avance pour vos lumineuses propositions !