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

Excel Discussion :

Action au changement de valeur d'une cellule dans une plage donnée (colonne) [XL-2016]


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Action au changement de valeur d'une cellule dans une plage donnée (colonne)
    Bonjour,

    Je sollicite de l'aide en vba pour un script dont je n'arrive pas à trouver. Il faut dire que je suis un sénior débutant en VBA

    Mon Problème est le suivant. J'ai dans un tableau une plage de cellules située dans la colonne K, les cellules allant de K17:K (plage que j'ai nommée "pointage") . Je souhaite par l'intermédiaire de Private Sub Worksheet_Change(ByVal Target As Range) lorsque la valeur d'une des cellules vides change par une action manuelle par un ("X"), je puisse actionner une autre macro par Call ….

    Quelqu'un peut-il me mettre sur la voie, je vous remercie par avance

    cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 265
    Points
    34 265
    Par défaut
    Salut,

    tu peux utiliser la notion d'intersection entre la cellule qui a changé et la plage de cellule qui t'intéresse :
    pour l'event
    https://silkyroad.developpez.com/VBA...Feuille/#LII-E

    pour l'intersection
    https://silkyroad.developpez.com/VBA...Feuille/#LII-I

    bonne lecture
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut action au changement de valeur d'une cellule dans une plage donnée (colonne)
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    tu peux utiliser la notion d'intersection entre la cellule qui a changé et la plage de cellule qui t'intéresse :
    pour l'event
    https://silkyroad.developpez.com/VBA...Feuille/#LII-E

    pour l'intersection
    https://silkyroad.developpez.com/VBA...Feuille/#LII-I

    bonne lecture

    Merci pour les conseils mais je ne suis pas beaucoup plus avancé !

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Citation Envoyé par jori78 Voir le message
    Merci pour les conseils mais je ne suis pas beaucoup plus avancé !
    Mais encore ??? Quel est le code de ta macro qui pose problème ?
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  5. #5
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut action au changement de valeur d'une cellule dans une plage donnée (colonne)
    Bonjour Patrice

    Ci-dessous le script qui me pose problème, merci pour ton éclairage et ton aide

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim plage As String
     
      plage = "pointage"
     
    'vérifie si une des cellules de la colonne "K17: K" nommé "pointage" est renseignée par "X", puis action Call..
     
              If Target.Rows.Count = 1 And Target.Cells.Count = 1 _
                   And Not Application.Intersect(Target, Range("plage" & "")) Is Nothing Then
                 If Target.Value = "X" Then
                   Call ToutCalculer
                End If
             End If
    End sub
    cordialement

    José

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Re,

    Si "pointage" est une plage nommée de la feuille, essaies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range
      Set plage = Me.Range("pointage")
      If Target.Count = 1 And Not Intersect(Target, plage) Is Nothing Then
        If Target.Value = "X" Then
          Call ToutCalculer
        End If
      End If
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut action au changement de valeur d'une cellule dans une plage donnée (colonne)
    Voici le message suite au lancement de la procédure..

    projet ou bibliothèque introuvable ! je ne vois où est l'érreur dans ton script

    Je fonctionne sur Windows 10 avec office pro 2019. il y a des fonctions tel que "calendar" qui ne fonctionne plus avec ce nouvel office !! capricieux le nouvel office ..

    ci joint fichier excel démembré

    Merci pour ton retour

    José
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par jori78 Voir le message
    Voici le message suite au lancement de la procédure..

    projet ou bibliothèque introuvable ! je ne vois où est l'érreur dans ton script
    Je fonctionne sur Windows 10 avec office pro 2019. il y a des fonctions tel que "calendar" qui ne fonctionne plus avec ce nouvel office !! capricieux le nouvel office ..
    As-tu vérifié les références (Outils/Références) du projet VBA ?
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  9. #9
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    non effectivement, mais là je suis un peu perdu, car je ne sais pas !

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par jori78 Voir le message
    non effectivement, mais là je suis un peu perdu, car je ne sais pas !
    Avec 2019 je ne sais pas mais autrement lorsqu'une référence n'est pas trouvée, dans la liste, elle est marquée MANQUANT:Nom_de_la_référence
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  11. #11
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    oui effectivement pour le calendar elle est marquée Manquante, et j'ai vue par ailleurs que c'est volontaire de la part de Microsoft, mais là n'est pas le problème, pour le code qui m'intéresse.
    Le script que tu m'as gentiment transmis ne fonction pas !! as tu une autre idée STP

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    le code que t'a montré Patrice740 ne peut que fonctionner, pour autant qu'existe une plage nommée "pointage"
    Si tel est bien le cas et que tu reçois un message d'erreur, il est le résultat de ta procédure ToutCalculer dont tu ne montres pas le code.... !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonsoir unparia,

    la macro "ToutCalcler" peut être remplacé par un MsgBox "cellule modifiée", vbInformation. La plage "pointage" contient des cellules vides et des cellules qui ont été pointée par "X"

    La macro "toutcalculer" fonctionne en individuelle, pas de problème avec ça

    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 plage As Range
      Set plage = Me.Range("pointage")
      If Target.Count = 1 And Not Intersect(Target, plage) Is Nothing Then
        If Target.Value = "X" Then
          Msgbox"cellule modifiée",vbinformation
        End If
      End If
    End Sub
    merci pour ton aide

    josé
    Fichiers attachés Fichiers attachés

  14. #14
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    le code que t'a montré Patrice740 ne peut que fonctionner, pour autant qu'existe une plage nommée "pointage"
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut action au changement de valeur d'une cellule dans une plage donnée (colonne)
    Patrice 740

    Merci pour ton aide quand même, mais je crois que j'ai de gros problèmes avec cette version d'office 2019

  16. #16
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par unparia Voir le message
     
    Bonjour Unparia

    J'ai testé sur une autre machine avec excel 2007 et un classeur vierge ouvert depuis excel 2007, je confirme que ce code ne fonctionne pas !! et je n'ai pas de message, rien..
    la plage "pointage" excite bien elle démarre à $K$16:k
    je ne comprends pas où est le problème...

    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 plage As Range
      Set plage = Me.Range("pointage")
      If Target.Count = 1 And Not Intersect(Target, plage) Is Nothing Then
        If Target.Value = "X" Then
          Msgbox"cellule modifiée",vbinformation
        End If
      End If
    End Sub
    cordialement

    José

  17. #17
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par jori78 Voir le message
    J'ai testé sur une autre machine avec excel 2007 et un classeur vierge ouvert depuis excel 2007, je confirme que ce code ne fonctionne pas !! et je n'ai pas de message, rien..
    la plage "pointage" excite bien elle démarre à $K$16:k
    je ne comprends pas où est le problème...
    Ce code fonctionne parfaitement mais peut-être que tu saisis x au lieu de X !!!

    Si tu veux indifféremment l'un ou l'autre :
    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 plage As Range
      Set plage = Me.Range("pointage")
      If Target.Count = 1 And Not Intersect(Target, plage) Is Nothing Then
        If UCase(Target.Value) = "X" Then
          MsgBox "cellule modifiée", vbInformation
        End If
      End If
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  18. #18
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Action au changement de valeur d'une cellule dans une plage donnée (colonne)
    Bonjour Patrice740

    Oui, mais c'est bien sur !! pourquoi n'y ai-je pas pensé avant..
    Je confirme ça fonctionne très bien
    Je te remercie Patrice, merci pour ta persévérance et ton aide

    cordialement et bonne journée

    José

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

Discussions similaires

  1. [XL-2007] Copie d'image dans une cellule vers une cellule d'une autre feuille
    Par natsamfa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2017, 21h27
  2. Réponses: 2
    Dernier message: 29/07/2016, 16h49
  3. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  4. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  5. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59

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