Comment réunir ces 2 macros en double clic

Bonjour le forum

J'ai cette macro (dans un module) en double clic cellule A3 pour afficher / masquer ligne 5

Sub AfficherMasquerDistanceMoisPrecedent()

    With ActiveSheet
'        .Unprotect
        With .Rows(5)       'Ligne N°5
            .Hidden = Not .Hidden
        End With
        .Range("A1").Select
'        .Protect
    End With
End Sub
Puis dans ThisWorkbook les 2 macros ci-dessous

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    Dim Fe As Worksheet
    Cancel = True
    If Target.Address(0, 0) = "A3" Then
        If Not Target.Comment Is Nothing Then AfficherMasquerDistanceMoisPrecedent

    ElseIf Target.Address(0, 0) = "G1" Then
        'cache ou affiche toutes les colonnes H de toutes les feuilles du classeur
        For Each Fe In Worksheets
            Fe.Columns(8).EntireColumn.Hidden = Not Fe.Columns(8).EntireColumn.Hidden
        Next Fe
    ElseIf Target.Address(0, 0) = "I1" Then
        UsfChoix.Show 0
    End If

End Sub

Et celle-ci pour afficher / masquer en double clic cellule A2 colonne D

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Columns("A"), Target) Is Nothing Then
    Cancel = Not Cancel
    Columns("D:D").Hidden = Not Columns("D:D").Hidden
  End If
End Sub

Je voudrais double cliquer cellule A2 pour afficher / masquer colonne D

Je voudrais double cliquer cellule A3 pour afficher / masquer ligne 5

Merci à vous pour vos éventuels retours

Cordialement

Cellule A3 fait les 2

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    Dim Fe As Worksheet
    Cancel = True
    If Target.Address(0, 0) = "A3" Then
        If Not Target.Comment Is Nothing Then AfficherMasquerDistanceMoisPrecedent
    Cancel = Not Cancel
    Columns("D").Hidden = Not Columns("D").Hidden
    End If
End Sub

Bonjour al87,

Au cas où, voici une possibilité en passant par un select case, pour l'instant basé sur l'adresse de la cible du double clic :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
select case Target.Address
    case "$A$3": If Not Target.Comment Is Nothing Then AfficherMasquerDistanceMoisPrecedent
    case "$A$2": Columns("D:D").Hidden = Not Columns("D:D").Hidden
    case "$G$1": MasquerColonneH
    case "$I$1": UsfChoix.Show
end select
End Sub

Sub AfficherMasquerDistanceMoisPrecedent()
With ActiveSheet
    '.Unprotect
    .Rows(5).Hidden = Not .Rows(5).Hidden
    .Range("A1").activate
    '.Protect
End With
End Sub

sub MasquerColonneH()
For Each ws In Worksheets
     ws.Columns(8).EntireColumn.Hidden = Not ws.Columns(8).EntireColumn.Hidden
Next ws
end sub

L'idée étant, si possible, de créer à terme des procédures pour chaque action afin de les appeler simplement à chaque cas, c'est plus simple à maintenir lorsque le besoin évolue (et ça permet aussi d'appeler une même procédure à plusieurs endroits).

Cdlt,

Bonjour…

Une autre proposition (dans ThisWorbook)

Dim Ws As Worksheet
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal R As Range, Cancel As Boolean)
  If Sh.Name Like "Feuil4" Then Exit Sub ‘utile si autres onglets présents et non concernés
  Cancel = Not Cancel
  Sh.Unprotect
  If R.Address = "$A$3" Then Rows(5).Hidden = Not Rows(5).Hidden
  If Not R.Comment Is Nothing Then Call AfficherMasquerDistanceMoisPrecedent  ‘il peut y avoir d’autres cellules commentées
  If R.Address = "$G$1" Then
    For Each Ws In Sheets ‘boucle d’action pour les autres onglets concernés sinon à l’éviter
      Ws.Unprotect
      Ws.Columns("H").Hidden = Not Ws.Columns("H").Hidden
      Ws.Protect
    Next
  End If
  If R.Address = "$I$1" Then UsfChoix.Show 0 'mode Modal pour éviter de l'ouvrir quand il l'est déjà
  Sh.Protect
End Sub
'ici ou ailleurs
Sub AfficherMasquerDistanceMoisPrecedent()
  MsgBox "Je ne sais pas !", , "Oups..." 'à développer
End Sub

Remarques :

- la pratique du (0, 0) n’est utile qu’avec des cellules formatées, tout comme 3GB () je l’ai ignorée car inutile avec l’évènement choisi qui se limiteà son appel qu’à une cellule sélectionnée.

- concernant l’utilisation du Not : ce n’est pas parce que ce n’est pas FAUX (<> 0) que c’est VRAI (=1) ce peut être une indécision (=2 ou 3 … ou 9).

Ce n’est par ce qu’on ne se sort pas par la porte qu’on entre par celle-ci. Il peut y avoir d’autres intrus comme Moi qui entrent par une porte-fenêtre !

Bonjour à tous les deux

Je vais m'inspirer des deux solutions

Merci à vous deux

Bonne fin de WE

Cordialement

Rechercher des sujets similaires à "comment reunir macros double clic"