Masquer plusieurs lignes en fontion de conditions
Maud
-
Mike-31 Messages postés 18406 Date d'inscription Statut Contributeur Dernière intervention -
Mike-31 Messages postés 18406 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrais qu'en fonction du nombre d'enfants sélectionné dans ma cellule D13 un certain nombre de lignes en dessous soit caché : par exemple
- si j'ai 3 enfants, les lignes 17 à 21 doivent être cachées
- si j'ai 4 enfants, les lignes 18 à 21 doivent être cachées
- si j'ai 5 enfants, je dois avoir les lignes 19 à 21 soient cachées
J'ai essayé de faire ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$13" Then
Select Case Range("D13")
Case 1
Rows("15:21").EntireRow.Hidden = True
Case 2
Rows("16:21").EntireRow.Hidden = True
Case 3
Rows("17:21").EntireRow.Hidden = True
Case 4
Rows("18:21").EntireRow.Hidden = True
Case 5
Rows("19:21").EntireRow.Hidden = True
Case 6
Rows("20:21").EntireRow.Hidden = True
Case 7
Rows("21:21").EntireRow.Hidden = True
End Select
End If
End Sub
Mais elle ne se déclenche pas tout le temps. Est-ce que c'est parce que j'ai un menu déroulant pour sélectionner le nombre d'enfant en D13? Ou Est-ce qu'il y a une erreur dans ma macro?
Je vous remercie par avance de votre aide
Maud
Je voudrais qu'en fonction du nombre d'enfants sélectionné dans ma cellule D13 un certain nombre de lignes en dessous soit caché : par exemple
- si j'ai 3 enfants, les lignes 17 à 21 doivent être cachées
- si j'ai 4 enfants, les lignes 18 à 21 doivent être cachées
- si j'ai 5 enfants, je dois avoir les lignes 19 à 21 soient cachées
J'ai essayé de faire ce code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$13" Then
Select Case Range("D13")
Case 1
Rows("15:21").EntireRow.Hidden = True
Case 2
Rows("16:21").EntireRow.Hidden = True
Case 3
Rows("17:21").EntireRow.Hidden = True
Case 4
Rows("18:21").EntireRow.Hidden = True
Case 5
Rows("19:21").EntireRow.Hidden = True
Case 6
Rows("20:21").EntireRow.Hidden = True
Case 7
Rows("21:21").EntireRow.Hidden = True
End Select
End If
End Sub
Mais elle ne se déclenche pas tout le temps. Est-ce que c'est parce que j'ai un menu déroulant pour sélectionner le nombre d'enfant en D13? Ou Est-ce qu'il y a une erreur dans ma macro?
Je vous remercie par avance de votre aide
Maud
A voir également:
- Masquer plusieurs lignes en fontion de conditions
- Partage de photos en ligne - Guide
- Comment appeler en masquer - Guide
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Mètre en ligne - Guide
- Masquer conversation whatsapp - Guide
2 réponses
L'utilisation ici de Worksheet_Change est mauvaise. Worksheet_Change permet d'agir lorsque la sélection d'une cellule change. Il faut utiliser Worksheet_SelectionChange, qui lui agit lors d'un changement de valeur d'une cellule.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$D$13" Then Select Case Range("D13") Case 1 Rows("15:21").EntireRow.Hidden = True Case 2 Rows("16:21").EntireRow.Hidden = True Case 3 Rows("17:21").EntireRow.Hidden = True Case 4 Rows("18:21").EntireRow.Hidden = True Case 5 Rows("19:21").EntireRow.Hidden = True Case 6 Rows("20:21").EntireRow.Hidden = True Case 7 Rows("21:21").EntireRow.Hidden = True End Select End If End Sub
Bonjour,
pour ma part comme la ligne 21 est fixe j'aurais écrit ce code
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, c As String
x = 14 + [$D$13].Value
c = 21
If Target.Address = "$D$13" Then
Cells.EntireRow.Hidden = False
If [$D$13] > 0 Then Rows(x & ":" & c).EntireRow.Hidden = True
End If
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
pour ma part comme la ligne 21 est fixe j'aurais écrit ce code
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, c As String
x = 14 + [$D$13].Value
c = 21
If Target.Address = "$D$13" Then
Cells.EntireRow.Hidden = False
If [$D$13] > 0 Then Rows(x & ":" & c).EntireRow.Hidden = True
End If
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.