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 :

lancer macro si changement valeur cellule + condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut lancer macro si changement valeur cellule + condition
    Hello, hello,


    j'ai une question, je voudrais lancer une macro lorsque que la valeur de cellule change au delà d'un certain seuil.

    J'ai commencé par écrire ce bout de code qui ne marche pas

    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim seuil As Double
     
     
       If Target.Previous = 0 Then
          MsgBox ("pas de valeur précédente")
          Exit Sub
       End If
     
       seuil = Target / Target.Previous
     
       If seuil > 0.01 Then
           MsgBox ("big move")
       Else
           MsgBox ("no big change")
       End If
     
    End Sub

    la variable target.previous est toujours vide
    Je pensais que target.previous renvoyait la valeur avant le changement.

    Une idée quelqu'un?

    Merci.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si la cellule est sélectionnée avant d'être changée, je propose ceci:
    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
    Public preced As Double
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim seuil As Double
       If preced = 0 Then
          MsgBox ("pas de valeur précédente")
          Exit Sub
       End If 
       seuil = (Target - preced) / preced   'REGARDE ICI
       If seuil > 0.01 Then
           MsgBox ("big move")
       Else
           MsgBox ("no big change")
       End If  
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       preced = Target.Value
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    hey mercatog once again,

    merci pour ta réponse

    j'ai testé ça marche bien,

    En revanche, je ne sais si les cellules seront sélectionnées avant d'être modifiées.

    Une autre question comment faire si les changement portent sur toute une plage à la fois?

    Encore merci de ton aide.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    La proposition précédente concerne uniquement la sélection et le changement d'une seule cellule. je n'ai pas mis le test sur Target.


    PS (sans liaison)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    seuil = Abs(Target - preced) / preced

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Pour la deuxième question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim c as range
     
    for each c in target
    'ton code avec c a la place de target
     
    next c
    Mais je ne sais pas comment tu pourra adapter ca avec le preced. mais ca doit être jouable en rusant bien

  6. #6
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour le fil le forum.. peut être partir sur un truc comme cela!!

    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 Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
    On Error Resume Next
    'ton code
    End If
    End Sub
    [/CODE]

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

Discussions similaires

  1. Macro sur changement valeur cellule?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2010, 07h00
  2. [XL-2003] Macro VBA copie valeur cellule excel et colle dans doc word
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 54
    Dernier message: 03/06/2009, 09h21
  3. 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
  4. boucle changement valeur cellule
    Par les4c77 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/10/2007, 13h33
  5. [VBA]lancer une macro à chaque changement de cellule dans une feuille
    Par freddddd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h58

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