Exécution non voulu de macro [VBA]

Bonjour, j'ai une feuille avec des données qui se mettent à jour, c'est lié à des données d'un autre logiciel.

Je veux mettre une alerte c'est à dire que dès que la valeur de la case qui se met à jour passe sous le niveau cible alors on a une message box qui s'affiche.

Voici le code ci dessous. La macro s’exécute toute les 3 seconde et regarde la valeur des deux cellules.

J'ai un bouton pour lancer une première fois la macro.

Private Sub lancer()

Application.OnTime Now + TimeSerial(0, 0, 3), "macroo"

End Sub

Sub macroo()

If Workbooks("Classeur1").Sheets(1).Range("D1").Value <= Workbooks("Classeur1").Sheets(1).Range("A2").Value Then
    MsgBox ("ça marche")
    Exit Sub
End If

Call lancer

End Sub

Le code fonctionne bien mais si j'ouvre en même temps un autre classeur alors la macro s'active sur ce nouveau classeur et m'affiche la messagebox. Comment éviter ce problème et faire en sorte qu'elle ne s’exécute que sur le bon classeur?

Merci de votre aide.

Bonjour,

Qu'est-ce qui te fais dire qu'elle s'active sur le nouveau classeur ?

La présence d'un autre classeur ne doit pas l'empêcher d'afficher le message si la condition est satisfaire.

Je viens de trouver le problème. Sur l'autre ordinateur où je l'ai testé je n'avais pas mis workbooks("non du classeur").sheets(1)

Du coup maintenant ça marche.

Mais j'aimerais quand même savoir, si on ne précise pas le workbook la macro peut s'activer pour les autres workbook même si la macro est bien dans le projet du bon classeur?

MFerrand a écrit :

Bonjour,

Qu'est-ce qui te fais dire qu'elle s'active sur le nouveau classeur ?

La présence d'un autre classeur ne doit pas l'empêcher d'afficher le message si la condition est satisfaire.

Le problème était que justement la condition n'était pas satisfaite mais elle l'était sur le nouveau classeur ouvert du coup le message s'affichait. Même si j'ai résolu le problème j’aimerais quand même savoir pourquoi.

Une expression non qualifiée (sans référence explicite à l'objet conteneur) est imputée à l'élément actif (et si l'élément actif n'est pas compatible : erreur...). D'où l'intérêt de ne pas laisser VBA chercher à quelle feuille il doit rattacher une plage, en lui disant on fiabilise le résulltat (il n'ira pas voir ailleurs !) et il est plus rapide...

Cordialement

Ah ok super merci maintenant je comprends mieux

Rechercher des sujets similaires à "execution voulu macro vba"