Macro masquage de ligne selon valeur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Benjy51190

XLDnaute Nouveau
Bonjour à tous et merci à vous de lire mon sujet.

Je cherche à réaliser une macro "réversible" qui me permettrait de masquer/afficher les lignes dont le total de la cellule de cette même ligne est égale ou supérieur à 72:

Ligne concernée de 6 à 1003
Cellule dont la valeur détermine le masquage/affichage: S

Merci par avance pour votre aide
Bonne soirée à tous
 
Bonsoir le fil, le forum

Une autre proposition "AllinOne"
(la 1ère exécution masque les lignes, la seconde les démasque 😉 )
VB:
Sub MasqueDemasque()
With Range("S6:S1003").Offset(, Columns.Count - 19)
.FormulaR1C1 = "=CHAR(65-(8*(RC19>=72)))*1"
.SpecialCells(xlCellTypeFormulas, 1).EntireRow.Hidden = Not .SpecialCells(xlCellTypeFormulas, 1).EntireRow.Hidden 
.Clear
End With
End Sub

EDITION: Bonsoir mapomme, Hieu
 
Bonjour @Staple1600 🙂😉,

Juste pour pinailler et surtout me permettre de te saluer...

Ta macro est dépendante de l'état (masqué ou non) de la première ligne contenant une valeur >= 72 (me semble-t-il).

Soyons tordus 🙄:
Ligne 10 : première valeur supérieure à 71 en colonne S
Masquons cette ligne (n °10)
Exécutons la macro MasqueDemasque -> la macro affiche toutes les lignes dont la valeur en S est supérieure ou égale à 72

Masquons à nouveau cette ligne (n ° 10) (un utilisateur fou en quelque sorte et qui en veut beaucoup à la ligne 10)
Exécutons une 2ème fois la macro MasqueDemasque -> la macro affiche encore toutes les lignes dont la valeur en S est supérieure ou égale à 72

Masquons à nouveau cette ligne (n° 10) (un utilisateur toujours aussi fou et qui en veut à mort à la ligne 10)
Exécutons une 3ème fois la macro MasqueDemasque -> la macro affiche encore toutes les lignes dont la valeur en S est supérieure ou égale à 72
etc...

voir illustration dans fichier joint...
 

Pièces jointes

Bonjour Benjy51190, Hieu, mapomme, JM, le forum,
Code:
Sub VuPasVu()
Application.ScreenUpdating = False
If TypeName([PasVu]) <> "Boolean" Then ThisWorkbook.Names.Add "PasVu", False
ThisWorkbook.Names.Add "PasVu", Not [PasVu]
With [S6:S1003] 'adaptable
    .Insert xlToRight
    .Offset(, -1) = "=1/(RC[1]>=72)"
    On Error Resume Next 'si aucune SpecialCell
    .Offset(, -1).SpecialCells(xlCellTypeFormulas, 1).EntireRow.Hidden = [PasVu]
    .Offset(, -1).Delete xlToLeft
End With
End Sub
Bonne journée.
 

Pièces jointes

Re,

Une autre solution avec le filtre avancé sur ce fichier (2) :
Code:
Sub VuPasVu()
If TypeName([Vu]) <> "Boolean" Then ThisWorkbook.Names.Add "Vu", True
ThisWorkbook.Names.Add "Vu", Not [Vu]
With Feuil1 'CodeName
    If [Vu] Then
        If .FilterMode Then .ShowAllData
    Else
        With .[S5:S1003] 'adaptable
            .Cells(2, 2) = "=RC[-1]<72" 'critère en T6
            .AdvancedFilter xlFilterInPlace, .Cells(1, 2).Resize(2)
        End With
    End If
End With
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour