Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Je souhaiterais un bouton unique, style interrupteur, pour masquer les dates contenues dans la colonne G inférieures à aujourd'hui ou à l'inverse tout afficher à nouveau.
Je vous remercie.
Sub Gestion()
a = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
If ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = "MASQUER" Then
Masquer
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = "DEMASQUER"
Else
Démasquer
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = "MASQUER"
End If
End Sub
Sub Masquer()
Application.ScreenUpdating = False
DL = Range("G65500").End(xlUp).Row ' Dernière ligne
Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Insére colonne en premier (A)
f = "=SI(H2<AUJOURDHUI();CAR(1);0)" ' Formule utilisée
Set r = Range("A2:A" & DL) ' Plage où coller la formule qui sera triée
r.FormulaLocal = f ' Coller formule
r.EntireRow.Sort r.Cells, xlDescending ' Tri pour regrouper et accélérer
r.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Hidden = True ' Masquage
Columns("A:A").Delete Shift:=xlToLeft ' Suppression de la colonne ajoutée
End Sub
Sub Démasquer()
' Démasque tout
Rows("2:65000").EntireRow.Hidden = False
End Sub
Je souhaiterais un bouton unique, style interrupteur, pour masquer les dates contenues dans la colonne G inférieures à aujourd'hui ou à l'inverse tout afficher à nouveau.
Je vous remercie.
Bonjour à tous
Hello sylvanu
Un truc plus simple sur double clic
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$L$1" Then Exit Sub
Cancel = True
[l1] = IIf([l1] = "Masquer", "Afficher", "Masquer")
If [l1] = "Masquer" Then
Range("$G$1:$G$2").AutoFilter Field:=1
Else
Range("$G$1:$G$2").AutoFilter Field:=1, Criteria1:=">=" & CLng(Date)
End If
End Sub
Sub Gestion()
a = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
If ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = "MASQUER" Then
Masquer
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = "DEMASQUER"
Else
Démasquer
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = "MASQUER"
End If
End Sub
Sub Masquer()
Application.ScreenUpdating = False
DL = Range("G65500").End(xlUp).Row ' Dernière ligne
Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Insére colonne en premier (A)
f = "=SI(H2<AUJOURDHUI();CAR(1);0)" ' Formule utilisée
Set r = Range("A2:A" & DL) ' Plage où coller la formule qui sera triée
r.FormulaLocal = f ' Coller formule
r.EntireRow.Sort r.Cells, xlDescending ' Tri pour regrouper et accélérer
r.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Hidden = True ' Masquage
Columns("A:A").Delete Shift:=xlToLeft ' Suppression de la colonne ajoutée
End Sub
Sub Démasquer()
' Démasque tout
Rows("2:65000").EntireRow.Hidden = False
End Sub
à sylvanu :
effectivement ça fonctionne mais les dates sont rangées par chronologie, ce que je ne souhaite pas !
chaque date doit garder sa ligne.
Merci beaucoup
Bonjour à tous
Hello sylvanu
Un truc plus simple sur double clic
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$L$1" Then Exit Sub
Cancel = True
[l1] = IIf([l1] = "Masquer", "Afficher", "Masquer")
If [l1] = "Masquer" Then
Range("$G$1:$G$2").AutoFilter Field:=1
Else
Range("$G$1:$G$2").AutoFilter Field:=1, Criteria1:=">=" & CLng(Date)
End If
End Sub
Private Sub CommandButton1_Click()
With ActiveSheet
If .FilterMode Then .ShowAllData
CommandButton1.Caption = IIf(CommandButton1.Caption = "Masquer", "Afficher", "Masquer")
If CommandButton1.Caption = "Masquer" Then
.UsedRange.AutoFilter
Else
.UsedRange.AutoFilter Field:=7, Criteria1:=">=" & CLng(Date)
End If
End With
End Sub
Private Sub CommandButton1_Click()
With ActiveSheet
If .FilterMode Then .ShowAllData
CommandButton1.Caption = IIf(CommandButton1.Caption = "Masquer", "Afficher", "Masquer")
If CommandButton1.Caption = "Masquer" Then
.UsedRange.AutoFilter
Else
.UsedRange.AutoFilter Field:=7, Criteria1:=">=" & CLng(Date)
End If
End With
End Sub
J'ai changé une date en ligne 4 et elle a bougé sauf erreur de ma part. Seules les dates avant aujourd'hui restent à leur place, pas celles postérieures à aujourd'hui...
J'espère m'être fait comprendre.
Merci
re..
Le principe de mon exemple est basé sur un filtre.
Pour laisser les filtres en place, changer cette ligne
.UsedRange.AutoFilter
par
.UsedRange.AutoFilter Field:=7
- 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