Macro avec double fonction

alain18

XLDnaute Occasionnel
Bonsoir,
J'aimerai savoir s'il est possible qu'une macro permette d'effectuer 2 actions différentes avec le même bouton de commande.
Je m'explique, en cliquant une 1ère fois sur le bouton de commande d'une macro celle-ci masque des lignes du tableur (jusque là rien de compliqué), mais à l'inverse en cliquant une 2ème fois sur le même bouton de commande de cette macro que celle-ci affiche les lignes qui avait été masquées précédemment.
Si un spécialiste a une idée....
Merci.
 

laurent950

XLDnaute Accro
Bonsoir
Oui c'est possible
VB:
Sub VisibleMasque()
'
' VisibleMasque Macro
'
    If Range(Cells(3, 1), Cells(3, 1)).EntireRow.Hidden = False Then
        Range("3:3,7:7,11:11,15:15,19:19,23:23,27:27").Select
        Selection.EntireRow.Hidden = True
    Else
        Rows("3:27").Select
        Selection.EntireRow.Hidden = False
    End If
End Sub
 

Pièces jointes

  • VisibleMasque.xlsm
    18 KB · Affichages: 22
Dernière édition:

alain18

XLDnaute Occasionnel
Bonsoir Laurent950 , job75
Merci de me confirmer que cela est possible, mais je ne vois pas comment lier les 2 macros sur le même bouton.
Je mets un exemple en copie qui ferme seulement mais pour la suite, je ne sais pas faire.
Merci
 

Pièces jointes

  • Fermer-Ouvrir.xls
    32.5 KB · Affichages: 25

job75

XLDnaute Barbatruc
Re,

Affecter cette macro au bouton :
Code:
Sub Bouton_Click()
With ActiveSheet.DrawingObjects(Application.Caller)
    Rows("5:11").Hidden = .Text = "Fermer"
    .Text = IIf(.Text = "Fermer", "Ouvrir", "Fermer")
End With
End Sub
A+
 

laurent950

XLDnaute Accro
Bonsoir Laurent950 , job75
Merci de me confirmer que cela est possible, mais je ne vois pas comment lier les 2 macros sur le même bouton.
Je mets un exemple en copie qui ferme seulement mais pour la suite, je ne sais pas faire.
Merci
VB:
Sub VisibleMasque()
'
' VisibleMasque Macro
'
    If Range(Cells(5, 1), Cells(5, 1)).EntireRow.Hidden = False Then
        'Sub fermer()
        'Range("3:3,7:7,11:11,15:15,19:19,23:23,27:27").Select
        Rows("5:11").Select
        Selection.EntireRow.Hidden = True
        'Range("B12").Select
    Else
        ' Sub ouvrir()
        'Rows("3:27").Select
        Rows("4:12").Select
        Selection.EntireRow.Hidden = False
        'Range("B5").Select
    End If
End Sub
 

eriiic

XLDnaute Barbatruc
les lignes 5:11 (Rows("5:11").Hidden) prennent l'état inverse de la ligne 5 ( = Not Rows(5).Hidden).
Si elle est visible, elles se masquent, et inversement.

C'est l'équivalent de la proposition de job75, sauf que lui modifie le libellé du bouton en plus.
eric
 

Discussions similaires

Statistiques des forums

Discussions
312 182
Messages
2 086 001
Membres
103 084
dernier inscrit
Hervé30120