Comment déclencher un macro en cliquant sur une cellule

Bonjour,

Dans un tableau j'ai une ligne par destination de vacances en Sicile.

Dans la dernière colonne de ce tableau j'ai une valeur contrôlée par une liste de 4 valeurs possibles (comprenant la valeur vide aussi).

En dehors de ce tableau, j'ai fait un tableau récapitulatif qui indique combien de lignes compte chaque valeur (en utilisant COUNTIF...).

J'aimerais qu'en cliquant sur un élément de ce tableau récapitulatif, une macro applique un filtre sur le 1er tableau pour ne montrer que les lignes ayant cet élément cliqué comme valeur dans la dernière colonne.

J'ai alors pensé à mettre un hyperlien sur la cellule, mais il me demande un nom de fichier.... (??)

Avez-vous une méthode plus élégante?

Merci d'avance,

Stefano

47nah.xlsm (18.06 Ko)

Bonjour,

En VBA il y a possibilité d'utiliser les évènements et dans ton cas celui qui nous intéresse est Worksheet_SelectionChange.

En pièce jointe, voici ce que je t'ai fait

227nah.xlsm (18.21 Ko)

oui effectivement ça marche mieux que dans Worksheet_FollowHyperlink() que j'avais utilisé!

Merci beaucoup!

Seule petite chose: si le tableau est mis à jour avec F9 et que, admettons les données changent en venant d'une source externe, alors il n'y aura pas de démarrage de SelectionChange(), en cliquant sur la même cellule. Il faudra alors cliquer ailleurs et recliquer sur la cellule pour voir les nouvelles données répercutées dans le tableau récapitulatif... Mais ce n'est pas mon cas et je coupe les cheveux en 4!

Bonne soirée et merci encore!

Oui c'est bien ça. De plus, il faut faire attention pour le Range utilisé. Si la mise à jour se fait par une source externe, l'Autofilter ne prendra peut-être pas automatiquement en compte l'ensemble des données et risque de planter... Peut-être faut-il essayer de l'automatiser ?

Oops.. je viens de réaliser qu'on doit enlever les hyperliens (ctrl-k) que j'avais mis dans mon fichier initial, car ils sont inutiles... Votre solution n'en a pas besoin! C'est bien ça?

Je viens aussi de réaliser que cette macro est déclenchée aussi quand on se déplace sur les cellules avec les flèches du clavier... ce qui n'est pas tout à fait le comportement d'un hyperlien d'un navigateur (p.ex. MS Edge...).

J'ai trouvé http://www.learnexcelmacro.com/wp/2012/04/assign-macro-to-hyperlink/ qui explique qu'il faut simplement pointer l'hyperlien sur la cellule-même (j'aurais pu y penser moi-même...!) et déclencher le code qui est dans

Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Dans mon cas j'ai mis:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    If Target.Range.Address = Range("$J$1").Address Or Target.Range.Address = Range("$K$1").Address Then
        ActiveSheet.Range("NAHAppsH").AutoFilter Field:=16, Criteria1:="="
    ElseIf Target.Range.Address = Range("$J$2").Address Or Target.Range.Address = Range("$K$2").Address Then
        ActiveSheet.Range("NAHAppsH").AutoFilter Field:=16, Criteria1:="No Action Needed"
    ElseIf Target.Range.Address = Range("$J$3").Address Or Target.Range.Address = Range("$K$3").Address Then
        ActiveSheet.Range("NAHAppsH").AutoFilter Field:=16, Criteria1:="Data Convert"
    ElseIf Target.Range.Address = Range("$J$4").Address Or Target.Range.Address = Range("$K$4").Address Then
        ActiveSheet.Range("NAHAppsH").AutoFilter Field:=16, Criteria1:="Application Convey"
    ElseIf Target.Range.Address = Range("$J$5").Address Or Target.Range.Address = Range("$K$5").Address Then
        On Error Resume Next
        ActiveSheet.ShowAllData
    End If
End Sub

...et ça marche comme des hyperliens dans Edge!

Rechercher des sujets similaires à "comment declencher macro cliquant"