XL 2010 Masqur lignes en fonction de la valeur d'une cellule

guegan56

XLDnaute Nouveau
Bonjour,

Novice sur VBA, j'ai regardé plusieurs forum sans pavenir à mes fins.
Je souhaite :
- si la valeur de F22 est vide alors masquer les lignes 23 à 101
- si la valeur de F22 est "Oui" alors masquer la ligne 23 et les lignes de 25 à 85
- si la valeur de F22 est "Non" alors masquer les lignes de 24 à 28

Je travaille sur la feuil2
Merci pour votre aide !!
 

Rouge

XLDnaute Impliqué
Bonjour,

Code à coller dans le module VBA de la feuille et non dans un module standard. Réagit au changement de valeur de la cellule.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F22")) Is Nothing Then
        Rows("23:101").EntireRow.Hidden = False
        Select Case Target
            Case Is = "Oui"
                Rows("23").EntireRow.Hidden = True
                Rows("25:85").EntireRow.Hidden = True
            Case Is = "Non"
                Rows("24:28").EntireRow.Hidden = True
            Case Is = ""
                Rows("23:101").EntireRow.Hidden = True
        End Select
    End If
End Sub
 

Pièces jointes

  • guegan56_Masqur lignes en fonction de la valeur d'une cellule.xlsm
    15 KB · Affichages: 20

vgendron

XLDnaute Barbatruc
Hello
code à mettre dans le module de la feuille
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("F22")) Is Nothing Then
    Application.ScreenUpdating = False
    Rows("23:101").Hidden = False
        
    Select Case Range("F22")
        Case ""
            Rows("23:101").Hidden = True
        Case "Oui"
            Rows(23).Hidden = True
            Rows("23:85").Hidden = True
        Case "Non"
            Rows("24:28").Hidden = True
            
        Case "All"
            Rows("23:101").Hidden = False
    End Select
   
    
    Application.ScreenUpdating = True
End If
End Sub
 

guegan56

XLDnaute Nouveau
Bonjour à tous,

Grand merci pour votre aide !
Ca fonctionne, je suis ravie.

J'ai enrichi le code en appliquant le meme principe mais en fonction d'une autre cellule (C33) :
- si C33 est vide alors masquer les lignes 34 à 101
- si C33 est "aucune règle de clôture prédéfinie appliquable" alors masquer les lignes 34, 42 à 44 et 47 à 101
- si C33 est différent de vide ou aucune règle de clôture prédéfinie appliquable alors masquer les lignes 34 et les lignes 38 à 84

A noter, C33 est une listedéroulante en cascade en fonction de D13
Le code bug dès lors que la valeur C33 est à vide

Par avance, merci pour vos éclairages.
 

Pièces jointes

  • Template_test.xlsm
    30.1 KB · Affichages: 6

Rouge

XLDnaute Impliqué
Comme ceci, il faut ajouter ".Text" derrière Target
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F21")) Is Nothing Then
        Rows("22:102").EntireRow.Hidden = False
        Select Case Target.Text
            Case Is = "Oui"
                Rows("22").EntireRow.Hidden = True
                Rows("29:85").EntireRow.Hidden = True
            Case Is = "Non"
                Rows("23:26").EntireRow.Hidden = True
               Rows("34:35").EntireRow.Hidden = True
               Rows("38:102").EntireRow.Hidden = True
            Case Is = ""
                Rows("22:101").EntireRow.Hidden = True
        End Select
    ElseIf Not Intersect(Target, Range("C33")) Is Nothing Then
        Rows("34:102").EntireRow.Hidden = False
        Select Case Target.Text
            Case Is = ""
                Rows("34:101").EntireRow.Hidden = True
            Case Is = "Aucune règle de clôture prédéfinie appliquable"
                Rows("35").EntireRow.Hidden = True
                Rows("42:44").EntireRow.Hidden = True
                Rows("47:102").EntireRow.Hidden = True
            'si valeur tout autre que vide ou aucune règle de clôture prédéfinie appliquable alors masqur ligne 34 et lignes 38 à 84
            Case Is <> "Aucune règle de clôture prédéfinie appliquable"
                Rows("34").EntireRow.Hidden = True
                Rows("38:84").EntireRow.Hidden = True
        End Select
    End If
End Sub

Cdlt
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67