Bonjour,

Je suis tout à fait novice en VBA donc je recherche à droite et à gauche des moyens de m'en sortir.
J'ai donc réalisé un excel extrêmement lourd et j'aimerais l'optimiser pour pas que cela soit inutilisable.

Je vous met une partie de code ci dessous qui lorsque qu'on choisi un valeur dans une liste déroulante affiche et masque plusieurs ligne selon le cas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub '<-- si plusieurs cellules sont sélectionnées on quitte la procédure sinon ça bug
If Target.Address = "$G$9" Then '<-- vérification que la modification se passe dans la cellule G9
    Select Case Target.Value
        Case "Logements": Rows("24:28").Hidden = True
        Case "EHPAD": Rows("17:22").Hidden = True
        Case "Hopital": Rows("17:22").Hidden = True
        Case "Hotel*": Rows("17:22").Hidden = True
        Case "Hotel**": Rows("17:22").Hidden = True
        Case "Hotel***": Rows("17:22").Hidden = True
        Case "Gymnase": Rows("17:22").Hidden = True
        Case "Commerce": Rows("17:22").Hidden = True
        Case "Piscine": Rows("17:22").Hidden = True
        Case "Etablissement scolaire": Rows("17:22").Hidden = True
        Case "Restaurant": Rows("17:22").Hidden = True
    End Select
 
    Select Case Target.Value
 
        Case "EHPAD": Rows("26:27").Hidden = True
        Case "Hotel*": Rows("26:27").Hidden = True
        Case "Hopital": Rows("26:27").Hidden = True
        Case "Hotel**": Rows("26:27").Hidden = True
        Case "Hotel***": Rows("26:27").Hidden = True
        Case "Gymnase": Rows("26:27").Hidden = True
        Case "Commerce": Rows("26:27").Hidden = True
        Case "Piscine": Rows("26:27").Hidden = True
        Case "Restaurant": Rows("26:27").Hidden = True
    End Select
 
    Select Case Target.Value
        Case "Logements": Rows("17:22").Hidden = False
        Case "EHPAD": Rows("23:25").Hidden = False
        Case "Hotel*": Rows("23:25").Hidden = False
        Case "Hopital": Rows("23:25").Hidden = False
        Case "Hotel**": Rows("23:25").Hidden = False
        Case "Hotel***": Rows("23:25").Hidden = False
        Case "Gymnase": Rows("23:25").Hidden = False
        Case "Commerce": Rows("23:25").Hidden = False
        Case "Piscine": Rows("23:25").Hidden = False
        Case "Etablissement scolaire": Rows("23:27").Hidden = False
        Case "Restaurant": Rows("23:25").Hidden = False
    End Select
 
End If
End Sub
Je pense qu'il y a beaucoup mieux que ce code, voir peut être même pas besoin de passer par une macro. Avez vous des idées pour optimiser ceci ?

Merci d'avance pour votre aide !