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

or

 Comment exécuter automatiquement une macro lorsque le résultat de la formule de cellule change?

Supposons que j'ai une liste de formules basées sur les données de la colonne A et de la colonne B comme illustré ci-dessous, maintenant, je souhaite exécuter automatiquement un code de macro spécifique lorsque le résultat de la formule change avec ses cellules relatives. Y a-t-il une bonne idée pour résoudre ce travail dans Excel?

Exécuter automatiquement la macro lorsque le résultat de la formule de cellule change avec le code VBA


Exécuter automatiquement la macro lorsque le résultat de la formule de cellule change avec le code VBA


Le code VBA suivant peut vous aider à exécuter automatiquement un code spécifique lorsque la cellule de résultat de la formule change, procédez comme suit:

1. Cliquez avec le bouton droit sur l'onglet de feuille que vous souhaitez utiliser, puis choisissez Voir le code depuis le menu contextuel, dans le Microsoft Visual Basic pour les applications fenêtre, copiez et collez le code suivant dans le module vide:

Code VBA: exécuter automatiquement la macro lorsque le résultat de la formule de cellule change:

Private Sub Worksheet_Calculate()
'Updateby Extendoffice
    Dim Xrg As Range
    Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then
    Macro1
    End If
End Sub

Notes: Dans le code ci-dessus, C2: C8 est la plage de cellules de formule que vous souhaitez utiliser ,maco1 est le nom de la macro que vous souhaitez exécuter automatiquement. Veuillez le modifier selon vos besoins.

2. Ensuite, enregistrez et fermez cette fenêtre de code, maintenant, lorsque les données de la plage A2: B8 changent pour provoquer des modifications du résultat de la formule, votre code de macro spécifique est déclenché immédiatement.


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.
    Pierre GYSELINX · 1 years ago
    "Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then"
    this condition is ALWAYS encountered....
    Make sense ???
    Or is there something I didn't understand ?
    • To post as a guest, your comment is unpublished.
      Kerly · 3 months ago
      That right, did you solve this problem, and could you share for me, please?

  • To post as a guest, your comment is unpublished.
    shan · 2 years ago
    sorry it dosn't work it works if i put data manually. but i want to work it automatically bcz my data is updating by rand calcaulate
  • To post as a guest, your comment is unpublished.
    Cenk · 3 years ago
    So, what is my macro name. where can i find my macro name?
    • To post as a guest, your comment is unpublished.
      skyyang · 3 years ago
      Hello, Cenk,
      The macro name is the macro code you have inserted into the Excel file, and you just need to change the Macro1 in the above code to your own.
      For example, i insert a code here, and the macro name is: ColorCompanyDuplicates

      Sub ColorCompanyDuplicates()
      'Updateby Extendoffice 20160704
      Dim xRg As Range
      Dim xTxt As String
      Dim xCell As Range
      Dim xChar As String
      Dim xCellPre As Range
      Dim xCIndex As Long
      Dim xCol As Collection
      Dim I As Long
      On Error Resume Next
      If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
      Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
      End If
      Set xRg = Application.InputBox("please select the data range:", "Kutools for Excel", xTxt, , , , , 8)
      If xRg Is Nothing Then Exit Sub
      xCIndex = 2
      Set xCol = New Collection
      For Each xCell In xRg
      On Error Resume Next
      xCol.Add xCell, xCell.Text
      If Err.Number = 457 Then
      xCIndex = xCIndex + 1
      Set xCellPre = xCol(xCell.Text)
      If xCellPre.Interior.ColorIndex = xlNone Then xCellPre.Interior.ColorIndex = xCIndex
      xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
      ElseIf Err.Number = 9 Then
      MsgBox "Too many duplicate companies!", vbCritical, "Kutools for Excel"
      Exit Sub
      End If
      On Error GoTo 0
      Next
      End Sub
  • To post as a guest, your comment is unpublished.
    Tommy · 3 years ago
    What's the point of the condition? It'll always return true...in other words: it'll run without it. This also runs whenever any cells on the sheet change value.
  • To post as a guest, your comment is unpublished.
    Varun · 3 years ago
    Thanks a lot! This really helped me out.
    Is there any method to retrieve the address of the changed cell (with formula i.e Column C in this example).
    Thanks.