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 :

Déclencher une macro lorsqu'une cellule est modifiée [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Déclencher une macro lorsqu'une cellule est modifiée
    Bonjour,

    je voudrai savoir s'il est possible de déclencher automatiquement une macro lorsque le contenu d'une cellule est modifiée, sans avoir à cliquer sur un bouton.

    merci

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Oui c'est possible par macro événementielle au sein de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    ok je vais chercher une doc la dessus pour comprendre

    en fait j'aurai un grand nombre de cellule (toute une colonne) sur lesquelles je voudrai déclencher cette macro lorsque la cellule est modifiée, le nombre élevé ne pose pas de pb ?

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Voici un exemple pour étudier la question

    Exo-C_Evenement.xls

    par la même occasion il existe des macros événement sur le classeur

  5. #5
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Le problème avec ce genre de macro événementielle, c'est qu'elle se déclenche tout le temps ! Il est donc souvent utile d'en limité l'action à une plage (cellule/1, plage/2, ligne(s)/3, Colonne(s)/4. On utilise pour cela les codes suivant :

    1- Action limitée à la cellule A1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    'le reste du code
    End Sub
    2- Action limitée à la plage A1: D20 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Application.Intersect(Target, Range("A1:D20")) Is Nothing Then Exit Sub
    'le reste du code
    End Sub
    3- Action limitée aux lignes après la ligne 5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row < 6 Then Exit Sub
    'le reste du code
    End Sub
    4- Action limitée à la colonne A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 1 Then Exit Sub
    'le reste du code
    End Sub
    [Édition]
    Salut, Igloobel, nos post se sont croisés...

  6. #6
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    merci, je vais étudier tout ça, je veux affecter à la colonne F mais à partir de la ligne 6, je suppose donc qq chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 5 And _
       Target.Column > 7 And _
       Target.Row < 5    Then Exit Sub
    mon code correspondant à l'action voulu
    End Sub
    je mets cette macro où? dans un module? en la créant par la fonction "développeur" ?

  7. #7
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    merci, je vais étudier tout ça, je veux affecter à la colonne F mais à partir de la ligne 6, je suppose donc qq chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 5 And _
       Target.Column > 7 And _
       Target.Row < 5    Then Exit Sub
    mon code correspondant à l'action voulu
    End Sub
    je mets cette macro où? dans un module? en la créant par la fonction "développeur" ?
    comme je te l'ai dis dans ma première réponse dans le VBE dans la feuille surtout pas un module

  8. #8
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Citation Envoyé par retraite83 Voir le message
    merci, je vais étudier tout ça, je veux affecter à la colonne F mais à partir de la ligne 6, je suppose donc qq chose comme cela :

    J'aurais plutôt écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 6 Or Target.Row < 5    Then Exit Sub
    'mon code correspondant à l'action voulu
    End Sub

  9. #9
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Salut Thautheme,

    Effectivement mon exemple poster parle de la même chose en espérant que cela sied à notre ami retraite83

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/02/2016, 15h17
  2. [XL-2010] Mettre une date lorsque un champs est modifié
    Par patch2007 dans le forum Excel
    Réponses: 6
    Dernier message: 27/02/2012, 17h25
  3. Executer une macro lorsqu'une cellule se modifie suite à un calcul
    Par gregoozz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/11/2011, 10h54
  4. Executer une macro lorsqu'une cellule se modifie suite à un calcul
    Par bluesun91 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/06/2010, 16h25
  5. afficher une valeur sur une feuille lorsqu'une checkbox est cochée
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2008, 14h39

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