XL 2013 Simplifier le code IF imbriqué

chaelie2015

XLDnaute Accro
Bonjour FORUM
Je souhaite simplifier ce code de if imbriqués pour afficher et masquer les lignes selon le contenus des cellules (liste de validation).

SI AE20 =VISA CONFORME alors Afficher seulement la ligne 21
SI AE20 = REFUS DE VISA alors afficher les lignes 21 et 79
SI AE20 = RESERVES SUSPENSIVES (Secrétariat) alors afficher les lignes de 21 à 26
SI AE20 = RESERVES SUSPENSIVES (En séance) alors afficher la ligne 21 ET les lignes de 27 à 34

Et dans ce cas ou la cellule AE20 = RESERVES SUSPENSIVES (En séance) et on aura 3 cas dans la cellule AE33 :
SI AE 33 =VISA CONFORME alors Afficher alors afficher les lignes de 27 à 34
SI AE 33 = RESERVES SUSPENSIVES (Secrétariat) alors afficher les lignes de 34 à 39
SI AE 33 = RESERVES SUSPENSIVES (En séance) alors afficher les lignes de 40 à 47

Et dans ce cas ou la cellule AE20 = RESERVES SUSPENSIVES (En séance) et AE33 = RESERVES SUSPENSIVES (En séance) on aura 3 cas dans la cellule AE46 :
SI AE 46 =VISA CONFORME alors afficher les lignes de 27 à 34 et les lignes de 40 à 47
SI AE 46= RESERVES SUSPENSIVES (Secrétariat) alors afficher les lignes de 27 à 34 et les lignes de 40 à 47 et les lignes de 48 à 52
SI AE 46 = RESERVES SUSPENSIVES (En séance) alors afficher les lignes de 27 à 34 et les lignes de 40 à 47 et les lignes de 53 à 60

Et ainsi de suite
Merci
 

Pièces jointes

  • CHARLIE IF IMBRIQUES .xlsm
    83.6 KB · Affichages: 10
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Chaelie,
A défaut de supprimer les IF, ou plus exactement les CASE, car je ne vois pas la logique dans les N° de lignes, on peut au moins simplifier l'écriture pour être moins indigeste et plus clair, avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    Rows("21:79").EntireRow.Hidden = True
'1er passage
    Select Case Range("$AE$20").Value
        Case ("VISA CONFORME"):                                     Masque "21:21"
        Case ("REFUS DE VISA"):                                     Masque "21:21,79:79"
        Case ("RESERVES SUSPENSIVES (Secrétariat)"):                Masque "21:26"
        Case ("RESERVES SUSPENSIVES (En séance)"):                  Masque "21:21,27:34"
'2éme passage
        Select Case Range("$AE$33").Value
            Case ("VISA CONFORME"):                                 Masque "27:34"
            Case ("RESERVES SUSPENSIVES (Secrétariat)"):            Masque "34:39"
            Case ("RESERVES SUSPENSIVES (En séance)"):              Masque "40:47"
'3 éme passage
            Select Case Range("$AE$46").Value
                Case ("VISA CONFORME"):      Masque "27:34,40:47"
                Case ("RESERVES SUSPENSIVES (Secrétariat)"):        Masque "27:34,40:52"
                Case ("RESERVES SUSPENSIVES (En séance)"):          Masque "27:34,40:47,53:60"
            End Select '3émé passage
        End Select '2éme passage
        Case Else
              Rows("21:79").EntireRow.Hidden = True
    End Select '1er passage
End Sub
Sub Masque(Plage)
    Range(Plage).EntireRow.Hidden = False
End Sub
 

Pièces jointes

  • CHARLIE IF IMBRIQUES (1).xlsm
    86.8 KB · Affichages: 3

chaelie2015

XLDnaute Accro
Bonsoir sylvanu
Merci pour la réponse , j'ai trouvé un petit souci par exemple si je modifié la cellule AE46 la feuille complète décale vers la dernier ligne pourquoi ?
Merci et A+
 

Pièces jointes

  • CHARLIE IF IMBRIQUES sylvanu .xlsm
    83 KB · Affichages: 1

Statistiques des forums

Discussions
314 486
Messages
2 110 107
Membres
110 666
dernier inscrit
Yaya123