Re : Macro à plusieurs critères
Stagiairerm,
Où, quand, comment, quel message, symptômes??????
A+
Re : Macro à plusieurs critères
--------------------------------------------------------------------------------
Citation:
Envoyé par Hasco
Bonjour Stagiairerm,
Dans ton code les lignes suivantes
Code:
Rows("23:500").Select
Selection.EntireRow.Hidden = Truesont inutiles puisques la macro est chargée d'afficher celles qui correspondent aux critères et calchées les autres.
Dans les lignes suivantes:
Code:
Dim Res3 As Variant, Res4 As Variant, Res5 As Variant
For Each d In PlageCompare1.Cells
Res3 = Application.Match(c.Value, PlageCrit3, 0)
Res4 = Application.Match(c.Offset(1), PlageCrit2, 0)
Res5 = Application.Match(c.Offset(1), PlageCrit2, 0)
d.EntireRow.Hidden = Not (Not IsError(Res3) And Not IsError(Res4))
Next dsi tu changes la variable de boucle for each d ,
il faut également la changer dans les tests puisque elle est la référence à la cellule testée et ses soeurs du dessous [offset(1)].
Dailleurs Res4 et Res5 compare La cellule au dessous de d deux fois dans la même plage de critère. (PlageCrit2)
Code:
Res3 = Application.Match(d.Value, PlageCrit3, 0)
Res4 = Application.Match(d.Offset(1), PlageCrit2, 0)
Res5 = Application.Match(d.Offset(1), PlageCrit2, 0)Enfin qu'est que tu fais de Res5 dans :
Code:
d.EntireRow.Hidden = Not (Not IsError(Res3) And Not IsError(Res4))Qui logiquement devrait être
Code:
d.EntireRow.Hidden = Not (Not IsError(Res3) And Not IsError(Res4) And Not IsError(Res5))A part cela, je ne peux pas savoir ce qui pourrait ne pas fonctionner.
A bientôt
Merci de la réponse, ca me permet d'apprendre merci beaucoup, mais j'ai encore un soucis que je n'arrive pas a reperer...
Voila le code que j'ai corrigé...
Ben je n'arrive pas a faire fonctionner ce code : il doit y avoir un problème mais je ne sais pas ou... quelque chose te semble louche ?
Sub analyse2()
Dim PlageCrit3 As Range, PlageCrit4 As Range, PlageCrit5 As Range, PlageCompare1 As Range, d As Range
Set PlageCrit3 = Sheets("Analyse").Range("G527:G527")
Set PlageCrit4 = Sheets("Analyse").Range("F518:F525")
Set PlageCrit5 = Sheets("Analyse").Range("J518:J527")
Set PlageCompare1 = Sheets("Analyse").Range("A23:A500")
Dim Res3 As Variant, Res4 As Variant, Res5 As Variant
For Each d In PlageCompare1.Cells
Res3 = Application.Match(d.Value, PlageCrit3, 0)
Res4 = Application.Match(d.Offset(1), PlageCrit4, 0)
Res5 = Application.Match(d.Offset(2), PlageCrit5, 0)
d.EntireRow.Hidden = Not (Not IsError(Res3) And Not IsError(Res4) And Not IsError(Res5))
Next d
End Sub