Masquer des lignes en fonction des conditions

adrian

XLDnaute Nouveau
Bonsoir tout le monde,

Voici ma question :

Je souhaites masquer des lignes correspondant à des aspects non significatifs en fonction de la valeur de la cotation (en colonne D), mais aussi du critère1 (colonne B) et du critère2 (colonne C).

Je veux garder les lignes répondant aux conditions suivantes :
- cotation > 30
- critère1 = "moins important" ET critère2 = "non"

Je vous transmet un fichier test pour plus de clarté avec un début de macro pour la 1ère condition, c'est pour la seconde que je rencontre des problèmes.

Merci à tous et bon courage!!
 

Pièces jointes

  • test excel masquer aspects non significatifs.xls
    28 KB · Affichages: 73
G

Guest

Guest
Re : Masquer des lignes en fonction des conditions

Bonjour,

critère1 = "moins important" ET critère2 = "non"

Tu n'as pas de valeur "moins important" dans ta liste de validation des cellules!!!!!!!!!

Vérifie les données fournies

sinon

Code:
Sub Masquer_questions_non_significatives()
    Application.ScreenUpdating = False
    With Range("D21:D27")
        .AutoFilter Field:=1, Criteria1:="=moins important*", Operator:=xlAnd, _
                    Field:=2, Criteria1:="=Non*"
        
        .AutoFilter Field:=3, Criteria1:=">30", Operator:=xlAnd
    End With
    Application.ScreenUpdating = True
End Sub

A+
 
Dernière modification par un modérateur:

adrian

XLDnaute Nouveau
Re : Masquer des lignes en fonction des conditions

Bonjour à tous et merci à toi Hasco

J'ai essayé avec le code fourni mais il y a un soucis, toutes les lignes sont masquées bien que les critères soient réunis. J'avoue ne pas comprendre pourquoi.:confused:

Pour la valeur "moins important" il s'agit en réalité de "moins important (5)" et pour le critère 2 il s'agit de "Non (4)".

Est-ce qu'il n'y a pas un moyen de faire ce que je souhaite en complétant ce code :

Code:
Sub Masquer_questions_non_significatives()
Application.ScreenUpdating = False

For Each c In Range("D22:D27")
 If c < 30 Then
 c.Rows.Hidden = True
 End If
Next

'pour tout d de B22 à B27 et pour tout e de C22 à C27
'si d = "moins important (5)" et e = "Non (4)" alors
d.Rows.Hidden = False
End If
Next

Application.ScreenUpdating = True
End Sub


Merci d'avance.
 
G

Guest

Guest
Re : Masquer des lignes en fonction des conditions

Bonjour,

Si tu préfères une boucle (toujours moins rapide sur de long tableau)

Fais attention à tes critères et comment tu les exprime.

Code:
Sub Masquer_questions_non_significatives()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Range("[B][COLOR=red]B[/COLOR][/B]22:[B][COLOR=red]B[/COLOR][/B]27")
        c.Rows.Hidden = Not (c = "moins important (5)" And c.Offset(, 1) = "Non (4)")
    Next
   Application.ScreenUpdating = True
End Sub

A+
 

adrian

XLDnaute Nouveau
Re : Masquer des lignes en fonction des conditions

Bonjour à tous,

Merci Hasco avec la boucle ça fonctionne impec'.

Voilà mon code avec les 3 critères pour ceux que ça intéresse et qui peuvent se retrouver dans la même situation :

Code:
Sub Masquer_questions_non_significatives()
Application.ScreenUpdating = False

Dim c As Range
For Each c In Range("B22:B27")
c.Rows.Hidden = Not (c = "moins important (5)" And c.Offset(, 1) = "Non (4)" Or c.Offset(, 2) >= 30)
Next

Application.ScreenUpdating = True
End Sub

Encore merci pour l'aide et à bientôt pour de nouvelles questions^^
 

Discussions similaires

Réponses
12
Affichages
278

Statistiques des forums

Discussions
312 801
Messages
2 092 245
Membres
105 314
dernier inscrit
SABER ABD