IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro sur cellule changeante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut macro sur cellule changeante
    Bonjour,

    je dispose d'une cellule xls dont le contenu change (connexion avec un système d'info spécialisé). Il s'agit d'une date qui change quotidennement, je désire qu'à chaque fois que la date est actualisée, une macro s'exacute automatiquement.

    J'ai essayé l'évenement change et change selection dans la feuille worksheet mais il faut que dans ce cas, la cellule changeante soit pointée pour que la macro s'execute.

    Merci de vos éclaircissements

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    sans certitude, tu peux essayer quand_calculate

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    c'est quoi quand_calculate et comment faire exactement ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    evenementielle comme quand_change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Private Sub Worksheet_Calculate()
    End Sub

  5. #5
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    L'événement Change devrait convenir parfaitement.

    Si tu veux que le traitement soit lancé uniquement quand la cellule qui t’intéresse (A10 par hypothèse) est modifiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect(Target, Range("A10")) Is Nothing Then
                ' Ici ton traitement
            End If
    End Sub
    Cordialement,

    Michel Gaboly

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    J'ai essayé ce code mais malheureusement ça n'a pas marché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect(Target, Range("A10")) Is Nothing Then
                MsgBox "OK"
                ' Ici ton traitement
            End If
    End Sub

  7. #7
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Qu’entends-tu par cela n’a pas marché ?

    As-tu bien mis le code dans le module de la feuille concernée ?

    Dans mon exemple de code, le traitement (ici le MsgBox "OK" que tu as rajouté), ne se déclenche que si la cellule A10 est modifiée. Rien ne se passe dans le cas contraire. J'ai vu que tu n’as pas adapté la référence de mon exemple de code. As-tu modifié la cellule qui t’intéresse (j’ignore de laquelle il s’agit) ou la cellule A10, qui est la seule à provoquer l’affichage du message ?

    N’hésite pas à apporter des précisions si tu ne t’en sors pas.

    Cordialement,

    Michel Gaboly

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    je pense que mjanbar a raison, ça ne marche pas puisque la cellule a10 est le résultat d'un calcul
    supposons a10 la cible
    b1 sur la meme feuille et a1 en feuille 2
    formule en b10 = =Feuil2!A1
    et la formule en feuille2 A1 est =45+Feuil1!B1
    donc si je change en b1 de la feuille 1 je change a10 sans que la target soit a10
    j'utilise donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public valeur
    Private Sub Worksheet_Calculate()
    If Not valeur = Range("a10").Value Then MsgBox "ok"
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range)
    valeur = Range("a10").Value
    End Sub
    maintenant ça c'est pour une liaison, je ne sais pas ce que ça donne pour un "connexion avec un système d'info spécialisé", a toi de nous dire

  9. #9
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonjour,

    Si l’événement Change n’est pas déclenché, parce que la valeur modifiée résulte d’un calcul, j’aurais tendance à stocker la valeur de "A10" avant recalcul, en utilisant un nom caché, pour éviter que l’utilisateur ne le modifie ou ne le détruise.

    L’intérêt d’un nom est qu’on peut quitter Excel et réouvrir le classeur, sans que le système ne cesse d’être fonctionnel.

    Pour initialiser le système, procédure à placer dans un module standard, à lancer une fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ValRef()
        ActiveSheet.Names.Add "Réf", Range("A10").Value, False
    End Sub
    Puis dans le module de la feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Calculate()
        If Range("A10") <> Evaluate("Réf") Then
            MsgBox Evaluate("Réf") ' A remplacer par le traitement adéquat
            Me.Names.Add "Réf", Range("A10").Value, False
        End If
    End Sub
    Cordialement,

    Michel Gaboly

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  2. Activation de macro sur modification de cellules particulières
    Par Tch3k dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2007, 18h11
  3. executer la macro sur la cellule Active
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2007, 12h51
  4. [VBA-E] Comment appliquer une macro sur plusieurs cellules
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/01/2007, 10h54
  5. [VBA-E]Lancer une macro sur changement de valeur cellule ?
    Par jeremiegrenoble dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo