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 une procédure avec "Worksheet_Change" sur une sélection multiple


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 39
    Points : 41
    Points
    41
    Par défaut Lancer une procédure avec "Worksheet_Change" sur une sélection multiple
    Bonjour à tous!

    Voici un problème que j'ai rencontré plusieurs fois et que je ne sais pas résoudre.


    DESCRIPTION :

    Il s'agit d'une macro évenementielle. Si je supprime la valeur d'une case, j'exécute une procédure.

    Imaginons que cette macro s'applique entre les cases A1 et D1. Vous avez bien compris que si je supprime la valeur de B1 uniquement, ou de D1 uniquement par exemple, la procédure s'exécutera.

    Pour se faire, j'utilise la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Tgt As Range)
    contenue dans la feuille en scannant l'adresse de la cellule qui vient d'être modifiée. Si cette adresse est dans la plage que je souhaite, je fais exécuter la procédure.


    PROBLEME :
    Maintenant imaginons que l'utilisateur du fichier veuille supprimer en un coup les valeurs contenues dans les cases A1, B1 et D1 par exemple. Il ferra donc une sélection multiple et dans ce cas là, la procédure ne sera pas effectuée puisque la méthode "Worksheet_Change" verra un groupe de cellule et non une cellule en particulier.


    QUESTION :
    Avez-vous des idées pour ne pas avoir ce problème?


    Je vous remercie d'avance! ;-) Bonne journée.

    Manu.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    Si bien compris, ici une solution tu trouveras.

    Cordialement

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut man_coef
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
    Dim Plg As Range
    If Intersect(Target, [A1:D1]) Is Nothing Then Exit Sub
    Set Plg = Intersect(Target, [A1:D1])
    For Each Cel In Plg
        'traitement des cellules une à une
    Next Cel
    End Sub
    Permet de traiter toutes cellules de la plage A1 à D1 qui a subit une modification, même en multi-sélection, Copier/Coller, ou effacement
    A+

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

Discussions similaires

  1. Problème de lenteur sur une proc avec EF mais pas sur la base
    Par Oberown dans le forum Entity Framework
    Réponses: 0
    Dernier message: 14/02/2013, 16h49
  2. Pb de compil sur une procédure pour killer les sessions d'une base
    Par tibal dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 24/04/2009, 16h42
  3. Réponses: 1
    Dernier message: 12/12/2008, 21h04

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