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 :

VBA problème avec le Worksheet change [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    BI
    Inscrit en
    Mars 2019
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI

    Informations forums :
    Inscription : Mars 2019
    Messages : 30
    Par défaut VBA problème avec le Worksheet change
    Hello le forum,

    Je n'arrive pas à résoudre un problème logique qui découle d'une macro worksheet change.

    En gros j'ai un prix liste, un discount et un prix remisé. Ce que je veux c'est de pouvoir saisir un discount et avoir le prix remisé qui se calcul, ou saisir un prix remisé et que le discount se calcul.

    Dans mon projet j'ai mes discounts en colonne K et les prix remisé en colonne L.

    J'ai placé une macro sur le worksheet change :

    -Si on change une valeur en colonne K alors on écris une formule de calcul du prix remisé sur la cellule d'a coté en colonne L.
    -Si on change une valeur en colonne L alors on écris une formule de calcul du discount sur la cellule d'a coté en colonne K.

    Le problème c'est que quand K change, je fais changer L qui fait changer K, qui fait changer L......

    Bref je n'arrive pas à trouver une astuce pour sortir de la macro au bon moment pour éviter cette référence circulaire.

    Si quelqu'un a une idée je veux bien.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour ALEX, le forum
    je sais pas si j'ai bien compris mais si par exemple vous cherchez à doublez pour la colonne B la valeur saisie en colonne A et vous divisez en deux si le saisie en colonne B vous pouvez faire avec
    NB : ce n'est que le bricolage d'un autodidacte et débutant VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        If Not Application.Intersect(Target, Range("A2:A20")) Is Nothing Then
            Cells(Target.Row, 2) = Cells(Target.Row, 1) * 2
        End If
          If Not Application.Intersect(Target, Range("B2:B20")) Is Nothing Then
            Cells(Target.Row, 1) = Cells(Target.Row, 2) / 2
        End If
        Application.EnableEvents = True
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Il faut désactiver les évènement au début de ta macro et les réactiver à la fin.
    LA syntaxe ressemble à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.enableevents=false ' ou true

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2018
    Messages
    973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juillet 2018
    Messages : 973
    Par défaut
    Citation Envoyé par Alex BI Voir le message
    Le problème c'est que quand K change, je fais changer L qui fait changer K, qui fait changer L......
    Bonjour,

    dans ton évènement worksheet_change, désactive les événements (Application.EnableEvents = False) avant la modification puis réactive les après (après avoir établi quelle colonne a été modifiée) :

    désactivation événements
    modification formule colonne L
    réactivation événements

    Et pareil pour l'autre colonne.

    Cordialement.

    Edit: pris de cours par Halaster.

  5. #5
    Membre averti
    Homme Profil pro
    BI
    Inscrit en
    Mars 2019
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI

    Informations forums :
    Inscription : Mars 2019
    Messages : 30
    Par défaut
    Magnifaïk

    Merci beaucoup Ecthelion2, halaster08 et BENNASR pour vos réponses.

    Bon week end !

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

Discussions similaires

  1. [XL-2010] Macro VBA : Problème avec SaveAs Worksheet en .txt format MS-DOS
    Par SpaceX dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/09/2018, 15h00
  2. [XL-2003] Macro VBA : Problème avec SaveAs Worksheet en .txt
    Par tity333 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/08/2010, 16h16
  3. [VBA]problème avec le debogage
    Par norkius dans le forum Access
    Réponses: 1
    Dernier message: 22/05/2006, 14h15
  4. [VBA] Problème avec composant VB6
    Par Diablo_22 dans le forum Général VBA
    Réponses: 8
    Dernier message: 16/03/2006, 20h41
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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