Dim I As Long, nbLignes As Long
Dim Debut As Long, Fin As Long
Dim Bouton
Dim Valeur As Integer
nbLignes = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Bouton = Application.Caller
Valeur = Val(Right(Bouton, 1))
For I = 4 To nbLignes
If Rows(I).Hidden = False And Range("A" & I) = Valeur Then
Debut = I
Exit For
End If
Next
For I = Debut + 1 To nbLignes
If Rows(I).Hidden = False And Range("A" & I) <> Valeur Then
Fin = I
Exit For
End If
Next
If Debut > 0 And Fin > 0 Then
Range("A" & Debut & ":A" & Fin).EntireRow.Hidden = False
End If
Sub Afficher()
Dim I As Long, nbLignes As Long
Dim Debut As Long, Fin As Long
Dim Bouton
Dim Valeur As Integer
Dim Tablo
nbLignes = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Bouton = Application.Caller
Tablo = Split(Bouton, " ")
Valeur = Tablo(1)
For I = 4 To nbLignes
If Rows(I).Hidden = False And Range("A" & I) = Valeur Then
Debut = I
Exit For
End If
Next
For I = Debut + 1 To nbLignes
If Rows(I).Hidden = False And Range("A" & I) <> Valeur Then
Fin = I
Exit For
End If
Next
If Debut > 0 And Fin > 0 Then
Range("A" & Debut & ":A" & Fin).EntireRow.Hidden = False
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long, nbLignes As Long
Dim Debut As Long, Fin As Long
Dim Valeur As Integer
If Target.Address(False, False) = "A1" Then
nbLignes = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Valeur = Target.Value
For I = 4 To nbLignes
If Rows(I).Hidden = False And Range("A" & I) = Valeur Then
Debut = I
Exit For
End If
Next
For I = Debut + 1 To nbLignes
If Rows(I).Hidden = False And Range("A" & I) <> Valeur Then
Fin = I
Exit For
End If
Next
If Debut > 0 And Fin > 0 Then
Range("A" & Debut & ":A" & Fin).EntireRow.Hidden = False
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim n°L As Long Dim p°L As Long Dim d°L As Long Dim reg As Integer Dim aff As Boolean n°L = Cells(4, "A").Row ' EDIT : remplacer la ligne suivant : ' d°L = Cells(Rows.Count, "C").End(xlUp).Row ' Par celle ci : d°L = Columns(3).Find("*", , , , , xlPrevious).Row If Target.Row < n°L Or Target.Row > d°L Then Exit Sub reg = Val(Cells(Target.Row, "A").Value) If reg = 0 Then Exit Sub Application.ScreenUpdating = False Do While n°L <= d°L If Val(Cells(n°L, "A").Value) <> 0 Then aff = reg <> Val(Cells(n°L, "A").Value) Rows(n°L).Hidden = False Else Rows(n°L).Hidden = aff End If n°L = n°L + 1 Loop Application.ScreenUpdating = True End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
22 mai 2018 à 23:18
Il y aura une cinquantaine de boutons (50 sites). Donc il semble que la méthode que tu proposes ne pourra pas être utilisée.
Par ailleurs, je ne comprends ce que tu veux dire par "Et si tu n'avais pas de sous-totaux, un simple filtre suffirait"
Merci pour ta réponse et pour ton aide.
23 mai 2018 à 10:26
https://mon-partage.fr/f/NIWcJuIY/
23 mai 2018 à 12:19
Malheureusement je dois m'adapter aux utilisateurs qui, bien souvent, sont incapables de faire autre chose que de cliquer sur un bouton ! ... D'où mon idée de départ de proposer un bouton à cliquer pour afficher le site choisi par l'utilisateur.