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 :

Évènement modification cellule empêcher l'action si même valeur [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut Évènement modification cellule empêcher l'action si même valeur
    Bonjour

    J'ai une feuille dans laquelle, l'utilisateur sélectionne des projets dans une liste.

    Suite à la sélection, je remplis la feuille.

    Si l'utilisateur sélectionne un autre projet le feuille est mise à jour.

    Cependant s'il clique et finalement reste sur le même projet, la mise à jour se fait quand même, car le système voit une modification de la cellule.

    existe-il une astuce pour que si la même valeur est sélectionnée, on ne relance pas la mise à jour ?
    je pose la question avant de me lancer dans un bricolage où je copierais lors du chargement la valeur dans une autre cellule et que je comparerais à l'entrée de la private sub ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1")) Is Nothing Then MsgBox ("bonjour")
    End Sub
    Merci
    Denis

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    En quoi consiste cette "mise à jour" ?

    Citation Envoyé par Denis_67 Voir le message
    existe-il une astuce pour que si la même valeur est sélectionnée, on ne relance pas la mise à jour ?
    Il doit en exister plusieurs.
    Une idée parmi d'autres : en fin de procédure, tu mets la valeur de B1 dans le commentaire de la cellule.
    En début de procédure, tu vérifies que la valeur courante de B1 est différente de la valeur contenue dans le commentaire.

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Bonjour Denis,


    Perso, j’essaierais de minimiser l'utilisation de change ... cela alourdis vraiment ton fichier. J'ai un collègue ayant fait quelque-chose du genre et ça été vraiment pénible pour les utilisateurs.


    Avez-vous votre code, car là je ne crois que personne ne peuvent deviner.



  4. #4
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Merci pour vos messages, désolé de n'avoir pas été assez clair.

    Je veux dire que lorsque je sélectionne une valeur (liste déroulante) en B1,

    une fonction efface les données présente sur la feuille

    et va de nouveau les remplir à partir des données stockées sur une autre feuille dont la clé et la valeur de la cellule B1

    Donc chaque fois que je sélectionne une valeur en B1 j'efface et je remplis avec les nouvelles valeurs.
    Dans le cas où l'utilisateur cherche hésite et finalement décide de rester sur le même projet, la moulinette passe quand même.

    C'était pour éviter ce petit désagrément, mais pas de quoi y passer des heures c'était au cas il y ait une astuce évdente.
    Denis

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Denis_67 Voir le message
    une fonction efface les données présente sur la feuille
    et va de nouveau les remplir à partir des données stockées sur une autre feuille dont la clé et la valeur de la cellule B1
    Je ne sais pas quelle est la nature de ces données mais peut-être y a-t-il quelques données clés que tu peux vérifier en comparant les données de ta feuilles et celles stockées sur l'autre feuille en relation avec la sélection.
    S'il y a correspondance parfaite, tu n'effaces pas.

    Au pire, lorsque ta macro copie les données de l'autre feuille, tu peux mettre quelque part la valeur sélectionnée dans ta liste déroulante et, en début de procédure, vérifier que la sélection est différente de cette valeur collée au "coup" précédent.

    Si tu ne peux pas faire cette comparaison, voir la solution utilisant le commentaire proposée dans mon message précédent.

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Je n'ai pas testé, mais ça devrait aller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Static OldVal As String
    If Not Intersect(Target, Range("B1")) Is Nothing Then
       If OldVal <> Target.Value Then Call Macro1
       OldVal = Target.Value 
    End If
    End Sub

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste en jouant avec SelectionChange() et Change() :
    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
     
    Dim Valeur As Variant
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Address(0, 0) <> "B1" Then Exit Sub
        If Target.Value = Valeur Then Exit Sub
     
        Valeur = Target.Value
        'suite du code si la valeur est défférente
        '...
        '...
        MsgBox "Changée !"
     
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        If Target.Address(0, 0) <> "B1" Then Exit Sub
     
        Valeur = Target.Value
     
    End Sub

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

Discussions similaires

  1. [WD-2007] Lancer macro sur événement modification de cellule tableau Word
    Par nonohzx dans le forum VBA Word
    Réponses: 1
    Dernier message: 19/02/2014, 10h21
  2. Impossible de lancer deux actions en même temps :/
    Par Cvbdev dans le forum Windows Forms
    Réponses: 11
    Dernier message: 08/05/2007, 14h39
  3. Comment empécher certaines actions
    Par DMboup dans le forum Windows XP
    Réponses: 4
    Dernier message: 08/09/2006, 13h08
  4. Empêcher une action sur un select
    Par licorne dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/09/2006, 12h50
  5. [Réseau][Thread]2 actions en même temps
    Par Belegkarnil dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 18/12/2005, 09h45

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