Note: The other languages of the website are Google-translated. Back to English

Comment déclencher ou exécuter une macro en cliquant sur une cellule spécifique dans Excel?

Lorsque vous travaillez avec Microsoft Excel, vous savez peut-être comment exécuter une certaine macro avec un bouton de commande. Mais savez-vous comment exécuter une macro en cliquant simplement sur une cellule spécifique dans une feuille de calcul? Cet article vous montrera la méthode de déclenchement d'une macro en cliquant sur une cellule spécifique dans les détails.

Déclenchez ou exécutez une macro en cliquant sur une cellule spécifique avec le code VBA


Déclenchez ou exécutez une macro en cliquant sur une cellule spécifique avec le code VBA

Le code VBA suivant peut vous aider à exécuter une macro en cliquant sur une cellule spécifique dans Excel. Veuillez faire comme suit.

1. Dans la feuille de calcul avec la cellule sur laquelle vous devez cliquer pour exécuter une macro, cliquez avec le bouton droit sur l'onglet de la feuille, puis cliquez sur Voir le code dans le menu contextuel.

2. dans le Microsoft Visual Basic pour applications fenêtre, copiez et collez le script VBA ci-dessous dans la fenêtre Code.

Code VBA: déclencher ou exécuter une macro en cliquant sur une cellule spécifique

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Notes:

1. Dans le code, D4 ​​est la cellule sur laquelle vous cliquerez pour exécuter la macro;

2. Veuillez remplacer le nom de code MaMacro avec la macro que vous exécuterez dans la feuille de calcul. Voir la capture d'écran:

3. appuie sur le autre + Q touches simultanément pour fermer le Microsoft Visual Basic pour applications fenêtre.

À partir de maintenant, en cliquant sur la cellule D4 dans la feuille de calcul actuelle, votre macro spécifiée sera déclenchée immédiatement.


Articles connexes:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (37)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Déclencher ou exécuter une macro en cliquant sur une cellule spécifique avec le code VBA, impossible de faire fonctionner cela. Je l'ai essayé de différentes manières, mais il n'a jamais atteint ce qui était promis.
Ce commentaire a été minimisé par le modérateur sur le site
Ce code ne fonctionnera que si vous le placez dans le module "ThisWorkbook". Il ne fonctionne pas sur un module général.
nom du classeur > Objets Microsoft Excel > ThisWorkbook.
Ce commentaire a été minimisé par le modérateur sur le site
Ce code fonctionnera sur le module de code de feuille de calcul. Vous devez faire un clic droit sur l'onglet de la feuille et cliquer sur "Afficher le code". Cela ouvrira le module de code pour cette feuille de calcul uniquement. Collez ensuite le code mentionné.
Ce commentaire a été minimisé par le modérateur sur le site
Si vous souhaitez avoir plusieurs macros, des cellules exécutant différentes macros sur la même page, est-ce possible ?
Ce commentaire a été minimisé par le modérateur sur le site
Cher Simon,
Le script VBA ci-dessous peut vous aider à exécuter différentes macros en cliquant sur les cellules de la même page.

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Si Target.Count = 1 Alors
Si ce n'est pas l'intersection (cible, plage ("D4")) n'est rien, alors appelez MyMacro1
Si ce n'est pas l'intersection (cible, plage ("D8")) n'est rien, alors appelez MyMacro2
Si ce n'est pas l'intersection (cible, plage ("D10")) n'est rien, alors appelez MyMacro3
Si fin
End Sub

Veuillez ajouter la ligne "If Not Intersect(Target, Range("D10")) Is Nothing Then Call MyMacro" pour exécuter plus de macro en cliquant sur la cellule. Et modifiez les noms de cellule et de macro dans le code en fonction de vos besoins.
Ce commentaire a été minimisé par le modérateur sur le site
Cela ne fonctionne pas sur mon Excel. Le code est-il correct ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Camila,
Désolé pour le dérangement. Essayez le code VBA ci-dessous.

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Dim xRgArr comme variante
Dim xFunArr comme variante
Dim xFNum en tant qu'entier
Dim xStr As String
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Cellules utilisées pour déclencher la macro
xFunArr = Array("Nom de code1", "Nom de code2", "Nom de code3") 'Les noms de code correspondants
Si Selection.Count = 1 Alors
Pour xFNum = 0 Vers UBound(xRgArr)
Définir xRg = ActiveSheet.Range(xRgArr(xFNum))
Si non l'intersection (cible, xRg) n'est rien alors
xStr = xFunArr(xFNum)
Application.Run xStr
Si fin
Suivant
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Cela a parfaitement fonctionné et me fera gagner beaucoup de temps - merci de partager vos connaissances - très apprécié !
Ce commentaire a été minimisé par le modérateur sur le site
Je suis heureux d'avoir pu aider.
Ce commentaire a été minimisé par le modérateur sur le site
Génial. Ça marche bien... Merci....
Ce commentaire a été minimisé par le modérateur sur le site
Salut.

Cela fonctionne bien, mais j'aimerais ajouter une condition à l'exécution de la macro. Je ne veux exécuter la macro que si la cellule à côté de la cellule dans laquelle je clique contient une certaine valeur.
Par exemple, lorsque je clique sur la cellule F6, je souhaite que la macro s'exécute si la cellule E6 contient "x", mais si la cellule E6 est vide, la macro ne doit pas s'exécuter.
J'espère que cela a du sens.
Merci

voici mon code d'origine sans la condition:


Option explicite

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Si Selection.Count = 1 Alors
Si ce n'est pas l'intersection (cible, plage ("F6: F18")) n'est rien alors
Date d'appelPick
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Le code VBA suivant peut vous aider à résoudre le problème. S'il vous plaît essayez et merci pour votre commentaire.

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Dim xRg As Range
Si ce n'est pas l'intersection (cible, plage ("F6: F18")) n'est rien alors
Set xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Si (xRg.Value = "") Ou (xRg.Value <> "X") Alors Quitter Sub
Choix de la date d'appel
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Merci, mais qu'en est-il des cellules fusionnées ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Alber,
Le code ne fonctionne pas pour les cellules fusionnées.
Ce commentaire a été minimisé par le modérateur sur le site
J'utilise OpenOffice et j'ai cliqué avec le bouton droit sur l'onglet de la feuille et les événements sélectionnés, puis sélectionné cette macro dans MyMacros. variable non définie...
Ce commentaire a été minimisé par le modérateur sur le site
Salut James,
Le code ne fonctionne que pour Microsoft Office Excel. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Mon code complet dans cette macro est :


Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)

Dim val As String
REM val = Plage("A2").Valeur

Si Selection.Count = 1 Alors
Si ce n'est pas l'intersection (cible, plage ("D24")) n'est rien alors
REM Appeler MaMacro
val = Range("D24").Valeur
Plage("B27").Valeur = valeur
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Ce sujet est très intéressant et je suis intéressé mais je ne sais pas où trouver, heureusement que vous créez ce sujet, j'espère que tout le monde m'aidera http://run-3.online
Ce commentaire a été minimisé par le modérateur sur le site
Excel 2002 (XP): Si un classeur est ouvert en sélectionnant "Fichier" et en appuyant sur "Maj", il désactive les macros dans cette feuille, le problème est que si je sélectionne "Outils> Macro> Macros ..." je peux exécuter la macro de toute façon, comment résoudre?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Roger,
Nous n'avons pas testé le code dans Excel 2002(XP). Pourquoi ne pas utiliser la nouvelle version de Microsoft Office ? Ce sera plus facile pour votre travail.
Ce commentaire a été minimisé par le modérateur sur le site
Même résultat en 2010.
Ce commentaire a été minimisé par le modérateur sur le site
Pourquoi ne pas simplement utiliser une version plus récente, ce sera plus facile
https://games.lol/racing/
Ce commentaire a été minimisé par le modérateur sur le site
Merci, mais que diriez-vous de cliquer sur plusieurs cellules pour exécuter plusieurs macros.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Essayez le code VBA ci-dessous.

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Dim xRgArr comme variante
Dim xFunArr comme variante
Dim xFNum en tant qu'entier
Dim xStr As String
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Cellules utilisées pour déclencher la macro
xFunArr = Array("Nom de code1", "Nom de code2", "Nom de code3") 'Les noms de code correspondants
Si Selection.Count = 1 Alors
Pour xFNum = 0 Vers UBound(xRgArr)
Définir xRg = ActiveSheet.Range(xRgArr(xFNum))
Si non l'intersection (cible, xRg) n'est rien alors
xStr = xFunArr(xFNum)
Application.Run xStr
Si fin
Suivant
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour ce code. Est-il possible de faire fonctionner cela en cliquant sur une cellule qui est fusionnée avec d'autres ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour M.Symonds,
Le code de cet article peut vous rendre service : https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
bonjour, j'essayais d'utiliser ce code pour exécuter une macro de collage mais je n'arrive pas à comprendre comment coller la macro correctement.

voici mon Marco d'origine

Sous-coller()
'
' Coller la macro
'

'
Plage ("B34"). Sélectionnez
ActiveSheet.PasteSpecial Format :="HTML", Lien :=Faux, DisplayAsIcon := _
False, NoHTMLFormatting :=True
End Sub


toute aide est appréciée
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, merci pour votre sujet intéressant. Que se passe-t-il si, par exemple, je veux cliquer sur D4 dans Sheet1 et voir le résultat de Macro dans Sheet2!F3.
Ce commentaire a été minimisé par le modérateur sur le site
Ne fonctionne plus.
Worksheet_SelectionChange n'existe pas par défaut. Cela signifie que vous ne pouvez pas l'utiliser pour déclencher une macro.

Les seuls sous-marins intégrés que vous pouvez utiliser sont référencés dans la liste déroulante "Classeur", donc...

La seule chose la plus proche que vous puissiez faire est d'utiliser Workbook_SheetBeforeDoubleClick. Mais il entrera en mode d'édition (ce n'est toujours pas un gros problème).
Ce commentaire a été minimisé par le modérateur sur le site
Salut CodeKiller.Worksheet_SelectionChange n'existe que dans l'éditeur de feuille (code). Cliquez avec le bouton droit sur l'onglet de la feuille et cliquez sur Afficher le code pour activer l'éditeur de feuille (code).
Ce commentaire a été minimisé par le modérateur sur le site
Il est important de souligner que la macro ne s'exécute que dans la feuille de calcul.
Ceux d'entre nous qui utilisent l'éditeur de base visuel régulier finissent souvent par stocker des macros ailleurs que dans la feuille de calcul actuelle.
Aucun de ces codes ne fonctionnera dans cette situation.
Je trouve ce code beaucoup plus simple et il fonctionne très bien pour moi: 

Private Sub Worksheet_SelectionChange (ByVal Target As Excel.Range)
Si ce n'est pas l'intersection (plage ("d1"), cible) n'est rien alors
Appelez aa
Si fin
End Sub
Sub aa() ' mettez votre code ici
Plage("D1").Sélectionnez
Selection.Copy
Plage("F1").Sélectionner
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Ce commentaire a été minimisé par le modérateur sur le site
Salut John Wells, merci pour le partage.
Ce commentaire a été minimisé par le modérateur sur le site
Pour ceux qui souhaitent que cela fonctionne pour les cellules fusionnées, le moyen le plus rapide et le plus sale consiste à mettre à jour la ligne 2 comme suit :
Option explicite

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Si Selection.Count > 0 Alors
Si ce n'est pas l'intersection (cible, plage ("D4")) n'est rien alors
Appeler MaMacro
Si fin
Si fin
End SubSelection.Count est utilisé pour déterminer si une sélection a été effectuée avant d'exécuter la macro restante. Si votre sélection se compose de quatre cellules qui ont été fusionnées, Selection.Count sera égal à 4 et le code restant ne s'exécutera jamais. Vous pouvez également remplacer la ligne 2 par le nombre exact de cellules qui ont été fusionnées, mais cela posera des problèmes si vous fusionner des cellules supplémentaires.
Ce commentaire a été minimisé par le modérateur sur le site
Grandiose ! Grazie, era una vita che sognavo di poterlo fare, se può essere utile a qualcuno avendo necessità di eseguire più codici su più celle per
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa option explicite altrimente ci viene detto che il riferimento al
feuille de travail non è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Option explicite
Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Si Selection.Count = 1 Alors
Si ce n'est pas l'intersection (cible, plage ("Y64")) n'est rien alors
Plage("Y65:Y78").Sélectionnez
Plage("Y65").Activer
Selection.ClearContents
Plage("Y65").Sélectionnez
Si fin
Si ce n'est pas l'intersection (cible, plage ("A33")) n'est rien alors
Plage("A33").Sélectionnez
Selection.Copy
ActiveWindow.WindowState = xlRéduit
Envoyer les clés "^v"
Envoyer les touches "{RETOUR ARRIÈRE}"
Si fin
Si fin
End Sub

Grazie ancora è stata un'autentica meraviglia !

maximum
Ce commentaire a été minimisé par le modérateur sur le site
Je n'avais aucune attente concernant ce titre, mais plus j'étais étonné. L'auteur a fait un excellent travail. J'ai passé quelques minutes à lire et à vérifier les faits. Tout est très clair et compréhensible. J'aime les messages qui comblent vos lacunes dans les connaissances. Celui-ci est du genre.
Ce commentaire a été minimisé par le modérateur sur le site
Salut,

No encuentro la manera de hacer lo que necesito. Espero de veras que me podáis ayudar.
Necesito que se lance una MACRO al hacer clic en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la acción) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber qué celda es la que se ha seleccionado.
Hay alguna manera de poder hacer eso ?
Merci beaucoup à l'avance.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Hola,
L'adresse de la cellule est constante. Tout ce que vous pouvez déplacer est la valeur de la cellule.
La cellule que vous avez spécifiée dans le code VBA est toujours la cellule qui déclenche le code VBA spécifié.
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL