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 :

Changement valeur de cellule - Alerte


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 362
    Par défaut Changement valeur de cellule - Alerte
    Bonjour,

    Voici mon code :
    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 (Application.Intersect(Range("D7:D31"), Target) Is Nothing) Then
            MsgBox "Cell " & Target.Address & " has changed."
        End If
    End Sub

    Celui-ci fonctionne parfaitement mais ne fonctionne pas si la cellule est calculée.

    J'aimerais que ce code soit en colonne "G" et se base sur la colonne "D"

    Formule en colonne "G" : =DATEDIF(D7;AUJOURDHUI();"y"


    Qui peut m'aider, merci.

    Belle journée.

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 291
    Billets dans le blog
    15
    Par défaut
    Salut,

    Je pense que tu pourrais explorer la piste avec Worksheet_Calculate, car Worksheet_Change intervient lorsqu'il y a une modification d'une cellule directement par l'utilisateur et non suite à une modification par calcul.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 362
    Par défaut
    oui, merci, c'est ce que je pensais mais je bloque avec Worksheet.Calculate

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    976
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 976
    Par défaut
    Salut, voici une possibilité. On stocke les valeurs initiales à l'activation de la feuille, ensuite on détecte les changements suite à un recalcul avec Worksheet_Calculate.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Dim OldValues As Object
     
    Private Sub Worksheet_Activate()
        ' Stockage des anciennes valeurs de la colonne G
        Set OldValues = CreateObject("Scripting.Dictionary")
     
        Dim cell As Range
        For Each cell In Range("G7:G31")
            OldValues(cell.Address) = cell.Value
        Next cell
    End Sub
     
    Private Sub Worksheet_Calculate()
        Dim cell As Range
        For Each cell In Range("G7:G31")
            ' Vérifier si la valeur a changé
            If OldValues.Exists(cell.Address) Then
                If OldValues(cell.Address) <> cell.Value Then
                    MsgBox "La cellule " & cell.Address & " a changé. Nouvelle valeur : " & cell.Value
                    ' Mettre à jour la valeur stockée
                    OldValues(cell.Address) = cell.Value
                End If
            Else
                ' Ajouter une nouvelle entrée si la cellule n'existe pas encore dans le dictionnaire
                OldValues(cell.Address) = cell.Value
            End If
        Next cell
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 362
    Par défaut
    merci mais j'ai une erreur dans WorkSheet_Calculate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If OldValues.Exists(cell.Address) Then

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    976
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 976
    Par défaut
    Quelle erreur précisément ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 362
    Par défaut
    "Erreur d'exécution '91'

    Variable objet ou variable de bloc With non définie

  8. #8
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    976
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 976
    Par défaut
    Ajoute cette ligne au début de la macro Worksheet_Calculate:
    If OldValues Is Nothing Then Set OldValues = CreateObject("Scripting.Dictionary")

    Si ça ne fonctionne pas, envoie un petit fichier exemple avec quelques données anonymisées pour tester.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 362
    Par défaut
    Tout fonctionne.

    Un super grand merci.

    Belle après-midi.

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

Discussions similaires

  1. lancer macro si changement valeur cellule + condition
    Par tikam75007 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/11/2009, 12h25
  2. [XL-2007] Macro événementielle sur changement de valeur dans cellule
    Par lagratteCchouette dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 12/06/2009, 15h53
  3. Changement de valeur de cellule automatique
    Par b.bilel dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/05/2008, 23h12
  4. exécution macro sur changement valeur cellule, juste un truc qui cloche.
    Par laatysha dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/05/2008, 09h00
  5. boucle changement valeur cellule
    Par les4c77 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/10/2007, 13h33

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