Affecter une macro à un texte

Bonjour, j'ai quelque macro dans un fichier. Au lieu d'affecter ces macro à un bouton pour lancer la macro, j'aimerais l'affecter à du texte.

Donc exemple dans cellule A3 d'un onglet donné, j'ai le texte Masquer Date et je voudrais y associé la macro de Masquer_Date.

Comment faire.

Bonjour,

Vous pourriez associer un événement à la cellule. A mettre dans le module de votre onglet :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Count > 1 Then Exit Sub

    If Not Intersect(Target, Range("A3")) Is Nothing Then
       If InStr(1, Target, "Masquer Date", vbTextCompare) > 0 Then
          'Application.EnableEvents = False
          Masquer_Date
          'Application.EnableEvents = True
       End If
    End If

    Cancel = False

End Sub

Bonjour

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$3" Then
        Call Masquer_Date
    End If
End Sub

moi j'utilisais cela à mettre dans la feuille en question

après il faut voir si c'est toute la colonne qui est concerné par le changement ou seulement une cellule précise

il y a d'autre sujet identique d'ailleurs

https://forum.excel-pratique.com/excel/lancer-une-macro-en-fonction-d-un-texte-dans-une-cellule-mais...

edit : Grilled

Cfrancky77, sa l'applique une seul fois. Quand je réaffiche les colonnes et que je pese sur le texte dans A3, il ne se passe rien. Voici le code modifié.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$3" Then
        Call Masquer_Colonnes_Dates_Sem
    End If
End Sub
Sub Masquer_Colonnes_Dates_Sem()
    Sheets("Feuil1").Range("Q:Z").EntireColumn.Hidden = True
End Sub

Bonjour,
Une proposition à adapter.
Cdlt.

12wild.xlsm (13.88 Ko)
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$A$3" Then
        Masquer_Date
    End If
End Sub

Private Sub Masquer_Date()
    MsgBox "Exécution macro !...", 64, "Information"
End Sub

Jean-Eric, super ça fonctionne. Voici le code que j'ai mis.

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$A$3" Then
        Masquer_Colonnes_Dates_Sem
    End If
End Sub

Private Sub Masquer_Date()
    MsgBox "Exécution macro !...", 64, "Information"
End Sub
Sub Masquer_Colonnes_Dates_Sem()
    Sheets("Sheet1").Range("Q:Z").EntireColumn.Hidden = True
End Sub

Maintenant, tu devinera que je veux maintenant en B3, mettre un texte qui dit l'inverse Afficher les dates. J'ai mis ce code modifié et sa fonctionne pas.

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$A$3" Then
        Masquer_Colonnes_Dates_Sem
    End If
End Sub

Private Sub Masquer_Date()
    MsgBox "Exécution macro !...", 64, "Information"
End Sub
Sub Masquer_Colonnes_Dates_Sem()
    Sheets("Sheet1").Range("Q:Z").EntireColumn.Hidden = True
End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$B$3" Then
        Afficher_Colonnes_Dates_Sem
    End If
End Sub

Private Sub Masquer_Date()
    MsgBox "Exécution macro !...", 64, "Information"
End Sub
Sub Afficher_Colonnes_Dates_Sem()
    Sheets("Sheet1").Range("q:z").EntireColumn.Hidden = False
End Sub

Re,
Une petite mise à jour à adapter.
Cdlt.

9wild.xlsm (14.94 Ko)

Oh super....et si je veux appliquer ce code pour d'autre cellule que je veux masquer/affiché selon mes besoins. Puis-je prendre le même code et simplement changer les infos de la cellule à appliquer et ensuite les colonnes que je veux masquer. J'ai au total 5 groupes de colonnes que je masque/affiche selon mes besoins.

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    If Target.Range.Address = "$A$3" Then

        With Target.Range

            If .Value = "Masquer date" Then
                .Value = "Afficher date"
            Else
                .Value = "Masquer date"
            End If

            HideColumns

        End With

    End If

End Sub

Private Sub HideColumns()

    Worksheets("Sheet1").Range("Q:Z").EntireColumn.Hidden = _
            Not Worksheets("Sheet1").Range("Q:Z").EntireColumn.Hidden

End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    If Target.Range.Address = "$B$3" Then

        With Target.Range

            If .Value = "Masquer Caisson" Then
                .Value = "Afficher Caisson"
            Else
                .Value = "Masquer Caisson"
            End If

            HideColumns

        End With

    End If

End Sub

Private Sub HideColumns()

    Worksheets("Sheet1").Range("H:L").EntireColumn.Hidden = _
            Not Worksheets("Sheet1").Range("H:L").EntireColumn.Hidden

End Sub

Re,
La mise à jour attendue.
Cdlt.

13wild.xlsm (15.66 Ko)

Excellent merci, j'ai testé en ajoutant les parties pour mes 3 autres conditions et sa fonctionne.

Bonsoir…

Cadre (Tableau très facile à réutiliser dans une suite à venir )

vu pas vu

Évènementielle

Private Sub Worksheet_SelectionChange(ByVal R As Range)
    If Intersect(R, [TC].Columns(1)) Is Nothing Or R.CountLarge > 1 Then Exit Sub
    R = IIf(R Like "M*", "Afficher", "Masquer")
    Columns(R(1, 2).Text).Hidden = R Like "A*"
    R(1, 2).Select 'pour l'effet bascule
End Sub

Bonjour Ordonc,
Une petite pensée amicale à Pierre Fauconnier.
Cdlt.

Rechercher des sujets similaires à "affecter macro texte"