Lancement macro sur modif cellule

badbad

XLDnaute Junior
Bonjour,
Ce que je cherche a réalisé est le lancement automatique d une macro lors de la modification du contenu d une cellule.
Dans le fichier ci-joint se trouve:
* En D20 une heure en temps réelle (macro réalisée par MyDearFriend que je remercie au passage)
* En D25 se trouve une heure que je rentre manuellement.
* En D29 un résultât de comparaison en l heure rentrée et l heure actuelle (passage a 1 si heure manuelle dépassée)

Lors du passage de 0 a 1 (avec fonction SI) je veux lancer une macro, pour ce faire j utilise le code (inséré dans la feuille contenant ces cellule):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D29")) Is Nothing Then
Message_Box
End If
End Sub

Le problème que je rencontre est le suivant:
Le lancement ne s effectué que si j update manuelle la valeur de la cellule D29.

Que dois-je faire pour que ma macro se lance automatiquement sans avoir besoin d updater manuellement la cellule D29?

Merci par avance pour votre aide
Cordialement
Alexandre BESSY
 

Pièces jointes

  • Lancement_Macro_lors_Evol_cellule.zip
    12.4 KB · Affichages: 32
  • Lancement_Macro_lors_Evol_cellule.zip
    12.4 KB · Affichages: 28
  • Lancement_Macro_lors_Evol_cellule.zip
    12.4 KB · Affichages: 32

ninbihan

XLDnaute Impliqué
Re : Lancement macro sur modif cellule

Bonsoir le forum et Bad Bad,

Tu peux intervenir directement dans l'excellente macro de mdf

Code:
Public Sub Chrono()
    'Programmation de l'évènement toutes les secondes
    Temps = Now + TimeValue("00:00:01")
    Application.OnTime Temps, "Chrono"
    Sheets("Feuil1").Range("D20").Value = Time
    If Sheets("Feuil1").Range("D29").Value = 1 Then
    MsgBox ("il est temps d'aller se coucher")
    Call StopChrono
    Exit Sub
    End If
End Sub

Bonne soirée,

Ninbihan
 

badbad

XLDnaute Junior
Re : Lancement macro sur modif cellule

Merci de ta reponse malheureusement je ne pense pas pouvoir appliquer cette methode car l example que j ai donne est tres simplifie car plusieures cellules de type trigueur lanceront plusieures macros differentes.

J ai modifie le fichier pour etre plus representatif.

Encore merci
Alexandre BESSY
 

Pièces jointes

  • Lancement_Macro_lors_Evol_cellule.zip
    13 KB · Affichages: 33
  • Lancement_Macro_lors_Evol_cellule.zip
    13 KB · Affichages: 35
  • Lancement_Macro_lors_Evol_cellule.zip
    13 KB · Affichages: 33

myDearFriend!

XLDnaute Barbatruc
Re : Lancement macro sur modif cellule

Bonsoir badbad, ninbihan,

Merci du compliment ninbihan :eek:

En complément de réponse....
Sachant que l'évènement Change() ne réagit malheureusement pas au recalcul de formule (d'où ton problème badbad) et sachant que l'utilisation de l'évènement Calculate() lui-même reste un exercice assez gourmand en ressources puisqu'il se déclencherait à chaque recalcul de la feuille, je pense que le plus simple et le plus économique reste de surveiller, non pas la cellule contenant la formule (D29), mais la cellule contenant l'antécédent à cette formule, c'est à dire la cellule D25 (qui elle, est saisie manuellement).

Tu peux donc aussi gérer l'affichage de ta Msgbox comme ça :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS LE MODULE DE CODE DE LA FEUILLE[/I][/B][/COLOR]
[COLOR=NAVY]Private Sub[/COLOR] Worksheet_Change([COLOR=NAVY]ByVal[/COLOR] Target [COLOR=NAVY]As[/COLOR] Range)
    [COLOR=NAVY]If Not[/COLOR] Application.Intersect(Target, Range("[B]D25[/B]")) [COLOR=NAVY]Is Nothing Then[/COLOR]
        Message_Box
    [COLOR=NAVY]End If
End Sub[/COLOR][/SIZE]

J'ajoute que ton code, comme ça, ne sait pas faire la distinction entre le 1 et le 0 pour déclencher la MsgBox...

EDITION: je viens de supprimer une partie de ma réponse, j'avais dit une énormité !
Par ailleurs, je n'avais pas vu ton dernier post...
Désolé. Je regarde également pour la suite...

Cordialement,
 
Dernière édition:

myDearFriend!

XLDnaute Barbatruc
Re : Lancement macro sur modif cellule

Re,

En réponse à ton dernier post, tu pourrais donc faire comme ça :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS LE MODULE DE CODE DE LA FEUILLE[/I][/B][/COLOR]

[COLOR=NAVY]Private Sub[/COLOR] Worksheet_Change([COLOR=NAVY]ByVal[/COLOR] Target [COLOR=NAVY]As[/COLOR] Range)
    [COLOR=NAVY]If Not[/COLOR] Application.Intersect(Target, Range("D25:G25")) [COLOR=NAVY]Is Nothing Then
        Select Case[/COLOR] Target.Column
        [COLOR=NAVY]Case[/COLOR] 4
            Message_Box1
        [COLOR=NAVY]Case[/COLOR] 5
            Message_Box2
        [COLOR=NAVY]Case[/COLOR] 6
            Message_Box3
        [COLOR=NAVY]Case Else[/COLOR]
            Message_Box4
        [COLOR=NAVY]End Select
    End If
End Sub[/COLOR][/SIZE]
Cordialement,
 

myDearFriend!

XLDnaute Barbatruc
Re : Lancement macro sur modif cellule

Et pour simplifier d'avantage...
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS LE MODULE DE CODE DE LA FEUILLE[/I][/B][/COLOR]

[COLOR=NAVY]Private Sub[/COLOR] Worksheet_Change([COLOR=NAVY]ByVal[/COLOR] Target [COLOR=NAVY]As[/COLOR] Range)
    [COLOR=NAVY]If Not[/COLOR] Application.Intersect(Target, Range("D25:G25")) [COLOR=NAVY]Is Nothing Then[/COLOR]
        Application.Run "Message_Box" & [COLOR=NAVY]CStr[/COLOR](Target.Column - 3)
    [COLOR=NAVY]End If
End Sub[/COLOR][/SIZE]
Valable uniquement si tes procédures "cibles" respectent toujours la syntaxe "Message_Box...."

Bonne fin de soirée.
 

Discussions similaires

Réponses
7
Affichages
292

Statistiques des forums

Discussions
311 720
Messages
2 081 898
Membres
101 834
dernier inscrit
Jeremy06510