Note: The other languages of the website are Google-translated. Back to English
Se connecter  \/ 
x
or
x
INSCRIPTION  \/ 
x

or

Comment exécuter une macro lorsque la valeur de la cellule change dans Excel?

Normalement, dans Excel, nous pouvons appuyer sur la touche F5 ou sur le bouton Exécuter pour exécuter le code VBA. Mais avez-vous déjà essayé d'exécuter le code de macro spécifique lorsqu'une valeur de cellule change? Cet article, je vais vous présenter quelques astuces rapides pour gérer ce travail dans Excel.

Exécuter ou appeler une macro lorsqu'une valeur de cellule spécifique change avec le code VBA

Exécuter ou appeler une macro lorsqu'une valeur de cellule change dans une plage avec le code VBA


flèche bleue bulle droite Exécuter ou appeler une macro lorsqu'une valeur de cellule spécifique change avec le code VBA

Pour exécuter un code de macro en modifiant la valeur d'une cellule, le code VBA suivant peut vous rendre service, procédez comme suit:

1. Cliquez avec le bouton droit sur l'onglet de la feuille que vous souhaitez exécuter la macro si la valeur de la cellule change, puis choisissez Voir le code dans le menu contextuel, et dans le Microsoft Visual Basic pour les applications fenêtre, copiez et collez le code suivant dans le module vide:

Code VBA: exécutez la macro lorsque la valeur de la cellule change:

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

doc exécuter la macro si la cellule change 1

Notes: Dans le code ci-dessus, A1 est la cellule spécifique sur laquelle vous souhaitez exécuter le code, Mymacro est le nom de la macro que vous souhaitez exécuter. Veuillez les modifier selon vos besoins.

2. Et puis enregistrez et fermez la fenêtre de code, maintenant, lorsque vous entrez ou modifiez la valeur dans la cellule A1, le code spécifique sera déclenché à la fois.


flèche bleue bulle droite Exécuter ou appeler une macro lorsqu'une valeur de cellule change dans une plage avec le code VBA

Si vous souhaitez exécuter ou déclencher une macro lorsque la valeur d'une cellule change dans une plage de cellules, le code suivant peut vous aider.

1. Cliquez avec le bouton droit sur l'onglet de la feuille que vous souhaitez exécuter la macro si la valeur de la cellule change, puis choisissez Voir le code dans le menu contextuel, et dans le Microsoft Visual Basic pour les applications fenêtre, copiez et collez le code suivant dans le module vide:

Code VBA: exécutez la macro lorsqu'une valeur de cellule change dans une plage:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc exécuter la macro si la cellule change 2

Notes: Dans le code ci-dessus, A1: B100 correspond aux cellules spécifiques sur lesquelles vous souhaitez exécuter le code, Mymacro est le nom de la macro que vous souhaitez exécuter. Veuillez les modifier selon vos besoins.

2. Et puis enregistrez et fermez la fenêtre de code, maintenant, lorsque vous entrez ou modifiez la valeur dans n'importe quelle cellule de A1: B100, le code spécifique sera exécuté à la fois.


Supprimer toutes les macros de plusieurs classeurs

Kutools pour Excel's Supprimer toutes les macros par lots L'utilitaire peut vous aider à supprimer toutes les macros de plusieurs classeurs selon vos besoins. Téléchargez et essayez gratuitement Kutools for Excel maintenant!

Kutools pour Excel: avec plus de 300 compléments Excel pratiques, essai gratuit sans limitation dans 30 jours. Téléchargez et essayez gratuitement maintenant!


Articles Liés:

Comment exécuter une macro automatiquement avant d'imprimer dans Excel?

Comment exécuter une macro en fonction de la valeur de la cellule dans Excel?

Comment exécuter une macro en fonction de la valeur sélectionnée dans la liste déroulante dans Excel?

Comment exécuter une macro en cliquant sur des liens hypertexte dans Excel?

Comment exécuter une macro lorsque la feuille est sélectionnée dans un classeur?


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ée...
  • 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 gammes...
  • 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 cellules...
  • 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 PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. 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
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Susan K Phillips · 1 years ago
    I am trying to automate 1 workbook (BOM) when another workbook(Parts Status) makes changes. The Parts status file updates every 15 minutes. I need to know how to automate a specific column when these changes occur? Any ideas
  • To post as a guest, your comment is unpublished.
    JayK · 1 years ago
    Hi guys, I am solving the following issue: I want to scrape a title of website when link inserted in column A and put this value to relevant cell (next to it) in column B. The issue seems to be that once I paste the website in column A, the code reruns the entire list from column A2 to "last row" as defined in the code. Is there any way to only modify column B once a single column A is modified? I.e. if Ipaste a link in column A36 I get a title in B36, regardless of whether the cell is in the middle of the used range or at the very bottom. I would like to use this without having to re-run multiple inputs as it currently stands; (i.e. the loop "for i =2 to last row")? Also, I would like to change the below from Modular macro i.e. sub to private sub reacting to change (i.e. intersect function) where the 'target' is any cell from A:A range. Many thanks!


    Sub get_title_header()

    Dim wb As Object
    Dim doc As Object
    Dim sURL As String
    Dim lastrow As Long
    lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).row

    For i = 2 To lastrow
    Set wb = CreateObject("internetExplorer.Application")
    sURL = Cells(i, 1)

    wb.navigate sURL
    wb.Visible = False

    While wb.Busy
    DoEvents
    Wend

    ''HTML document
    Set doc = wb.document

    Cells(i, 2) = doc.Title

    On Error GoTo err_clear
    Cells(i, 3) = doc.GetElementsByTagName("h1")(0).innerText
    err_clear:
    If Err <> 0 Then
    Err.Clear
    Resume Next
    End If
    wb.Quit
    Range(Cells(i, 1), Cells(i, 3)).Columns.AutoFit
    Next i

    End Sub




    Thank YOU!




  • To post as a guest, your comment is unpublished.
    roberto · 3 years ago
    Hola buenas tardes
    quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula,sin que el usuario introduzca ningun valor.
  • To post as a guest, your comment is unpublished.
    DrCartwright · 3 years ago
    The macro that you are calling where do you have this located? I have mine in the Modules folder but when I put any value in any cell of the worksheet I get a Compile error saying:
    Expected variable or procedure, not module.

    Please help.
    • To post as a guest, your comment is unpublished.
      skyyang · 3 years ago
      Hi, DrCartwright,
      Sorry for replying to you so late.
      Yes, as you said, the macro code should be located into the Module, and you need to change the code name to your own name as following screenshot shown:
  • To post as a guest, your comment is unpublished.
    Kevin · 3 years ago
    Hey, useful code. I was thinking if it was possible to insert a ring around the cells that are changed as they are changed? And reset the circles every Monday ?
    • To post as a guest, your comment is unpublished.
      skyyang · 3 years ago
      Hello, Kevin,
      Here is no idea for solving your problem, if you have any good solution, please comment here.
  • To post as a guest, your comment is unpublished.
    Tom · 3 years ago
    Worked great for me! My dilemma is that I want it to be a relative reference macro and there is a difference between hitting enter to save the entry and delete to clear the cell.
  • To post as a guest, your comment is unpublished.
    Andrew Cothliff · 4 years ago
    This worked first time for me using data validation list which displays text based on the list selection.
  • To post as a guest, your comment is unpublished.
    Jach · 4 years ago
    Yeah the description says it should trigger when value changes, but the second code says it's when the value is nothing, and the first one doesn't trigger when a value changes either, but if I press F5 when looking at the code, it wants to trigger MyMacro, but doesn't seem to react to value changes as much as going from nothing to something or opposite.
  • To post as a guest, your comment is unpublished.
    Wayne Hyde · 4 years ago
    This module is not working for me. It says when the VALUE of the cell changes it will execute the code. I find if I TYPE into the cell it works, but if the value of tthe cell is change by a formula, for example a Counta, then it does not execute. Do you have a solution to execute a macro when the VALUE changes through a formula?
    Thanks,
    Wayne
    • To post as a guest, your comment is unpublished.
      Ronnie · 4 years ago
      Same problem as Wayne. Any help much appreciated!
      Thanks

      Ronnie
      • To post as a guest, your comment is unpublished.
        skyyang · 4 years ago
        Hello, guys,

        Yes, the above code is only available when the cell value changes manually, if you need to run a specific macro code automatically when formula result changes with its relative cells change, please visit this article:
        https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
        Please try it, and hope your reply.
        • To post as a guest, your comment is unpublished.
          Felipe · 4 years ago
          It's not working... & I'm changing the cell value manually. Is there any preconfiguration that must be setup?
          • To post as a guest, your comment is unpublished.
            Eugenio · 3 years ago
            Test this in the procedure and use as a parameter


            Private Sub Worksheet_Change (ByVal Target As Range)

            MsgBox Target.Address & "-" e Target.AddressLocal

            End Sub