Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…