Déclencher action sur changement résultat de cellule

Bonjour

En B6 j'ai "=somme(B1:B5)"

Donc si je change B1, le résultat de B6 Change ... C'est logique ...

Comment déclencher un évènement uniquement si le résulta de B6 change et pas quand je change B6 manuellement ...

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B6")) Is Nothing Then MsgBox "B6 a changé"
End Sub

Qui peut m'aider ?

Merci

Bonjour

Surveilles la source de la modification

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B1:B5")) Is Nothing Then MsgBox "B6 a changé"
End Sub

Bonjour

Les 2 codes de Feuil1

Private Sub Worksheet_Activate()
valeur = Range("B6")
End Sub

Private Sub Worksheet_Calculate()
If Range("B6") <> valeur Then
MsgBox "B6 a changé"
valeur = Range("B6")
End If
End Sub

Cordialement

32classeur1.zip (6.41 Ko)

Bonsoir à tous,

Un essai avec :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Cells(6, 2).Precedents) Is Nothing Then MsgBox "B6 a changé"

End Sub

La macro se déclenchera à chaque modification d'antécédents de B6.

Amicalement

Merci pour votre réponse mais aucun des 2 codes ne fonctionne

Je les comprends tous les 2 mais aucun message ne s'affiche

Voici mon fichier

Pour info, j'ai excel 2013

33vn.xlsm (13.83 Ko)

Re,

cela marche chez moi.

Ne faudrait-il pas que tu remettes

Application.EnableEvents à True ?

Bonsoir,

Les propositions de Banzai64 et d'Amadéus fonctionnent parfaitement et correspondent à la demande:

Levince107 a écrit :

Comment déclencher un évènement uniquement si le résulta de B6 change et pas quand je change B6 manuellement ...

Voir fichier avec les différentes propositions (y compris celle proposée par haonv qui génère une erreur si on modifie B6 )

(le 'Precedents' m'a interpellé...)

Cdlt.

65levince107-v1.xlsm (51.66 Ko)

Bonsoir Jean Eric,

On peut traiter l'erreur:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo fin

If Not Intersect(Target, Cells(6, 2).Precedents) Is Nothing Then MsgBox "B6 a changé"

fin:

End Sub

Je n'avais testé qu'en modifiant la plage B1:B5 dans la formule. Il n'y a pas de message d'erreur dans ce cas.

L'erreur se produit quand on a pas de formule en B6; il n'y a pas d'antécédents a B6.

En effet "Cells(6, 2).Precedents" renvoie une plage de cellules qui sont des arguments de B6.

Amicalement

Bonsoir

J'ai testé et rien ne se déclenche. Même en spécifiant "Application.EnableEvents = True"

"Haonv" me dit que ça marche chez lui ... Pourquoi pas chez moi ?

Y a t'il des complèments ou autres astuces à activer ?

Serait-ce Excel 2013 ?

Quoiqu'il en soit, merci pour vos interventions ...

Au plaisir de vous relire

Bien à vous

Bonsoir,

Assures toi que le code est bien enregistré dans un module de feuille (ex. Feuil1 dans 'Microsoft Excel Objects') et non dans 'Modules'.

Cdlt

J'ouvre le fichier que vous m'avez envoyé, le code est donc forcément au bon endroit ...

Et pas de message ... Je ne comprends pas pourquoi ça marche chez vosu et pas chez moi ...

On peut lancer une session teamviewer si vous le souhaitez via mon mail perso ...

Merci

Bonsoir,

Fais les actions suivantes:

Menu Fichier

Options

Centre de gestion de la confidentialité

---> Paramètres du centre de la confidentialité

---> Paramètres des macros

Que vois-tu à l'écran?

Cdlt

Bonsoir

Sont cochés :

Activer toutes les macros (non recommandé) ....

Accès approuvé au modèle

D'autres macros fonctionnent très bien ...

Bien à vous

Re,

Que dois-je faire pour installer teamviewer (quelle version installer)?

Cdlt


Re,

J'ai installé TeamViewer

Merci Jean Eric mais c'est résolu.

En copiant le fichier sur mon bureau plutôt que dans les téléchargements google cela a fonctionné ...

Comprends pas mais bon, je comprends le code et il fonctionne ...

Merci beaucoup

Rechercher des sujets similaires à "declencher action changement resultat"