Lancement macro sur modif cellule

  • Initiateur de la discussion Initiateur de la discussion badbad
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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

Re : Lancement macro sur modif cellule

Bonsoir badbad, ninbihan,

Merci du compliment ninbihan 😱

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:
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,
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
703
Réponses
3
Affichages
564
Réponses
9
Affichages
854
Réponses
3
Affichages
1 K
Réponses
7
Affichages
1 K
Retour