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 :

Aide pour complément de code VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Aide pour complément de code VBA Excel
    Bonjour à tous,

    Dans un module, j'ai mis en place ce code qui me permet de faire la somme des cellules de même couleur.
    Cela fonctionne plutôt bien, sauf que lorsque je change de couleur, je suis obligé de retaper la formule dans ma cellule.
    Je souhaiterai que si je change de couleur dans la cellule où doit se trouver le résultat, le calcul se fasse automatiquement.

    Voir le fichier joint
    Comment puis-je procéder ?

    Merci par avance

    Code module
    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
     
    Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range) As Variant
    'Effectue la somme des cellules couleur
     
    Dim Cel As Range
    Dim Som As Double
     
    If PlageCouleur.Cells.Count > 1 Then
    SOMME_SI_COULEUR = CVErr(xlValue)
    Exit Function
    End If
     
    For Each Cel In PlageSomme
    If Cel.Interior.ColorIndex = PlageCouleur.Interior.ColorIndex Then Som = Som + Cel
    Next
     
    SOMME_SI_COULEUR = Som
     
    End Function
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    N'ai-est-ce pas Application.volatile qui gère ce genre d'évènement ?
    A mettre en tout début de Macro en principe (je ne l'ai jamais vraiment essayer, mais je sais ou du moins crois que c'est bel et bien cette fonction qui fait ce genre de boulot).

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    J'avais bien penser à cette solution, mais je ne sais pas où mettre cette procédure. J'ai essayé de la mettre dans mon module, mais cela ne fonctionne pas.

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 51
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Nouveau2 Voir le message
    Salut,

    N'ai-est-ce pas Application.volatile qui gère ce genre d'évènement ?
    A mettre en tout début de Macro en principe (je ne l'ai jamais vraiment essayer, mais je sais ou du moins crois que c'est bel et bien cette fonction qui fait ce genre de boulot).

    Je ne pense pas que Application.volatile va changer quelque chose.
    Le fait de changer la couleur d'une cellule ne provoque pas le calcul de celle-ci. C'est la raison pour laquelle le calcul de la cellule ne se refait pas.

    La seule solution doit être une action manuelle pour lancer le calcul changement de couleur.

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'avoue que j'ai pas fais spécialement attention à ce qui été modifié (La couleur des cellules plutôt que leur valeur (.Value)). Alors effectivement, j'ai été un peu trop vite en besogne en donnant une solution générale qui ne marche très certainement pas si c'est autre chose que la valeur des cellules qui changent.
    Dernière modification par AlainTech ; 22/09/2013 à 12h49. Motif: Suppression de la citation inutile

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Utiliser une macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheet_SelectionChange(ByVal Target As Range)
    qui s'active lorsqu'on change de sélection plutôt qu'une fonction (mise en mémoire des couleurs, test conditionnel pour voir si couleurs actuelles ont changé avec couleurs mémorisées) ?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Essayez la démarche suivante
    1) changez le code de la fonction avec ce code comportant un ajout signalé par des ///
    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
    Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range) As Variant
    'Effectue la somme des cellules couleur
    Dim Cel As Range
    Dim Som As Double
     
    Application.Volatile    '/// ajout 
     
    If PlageCouleur.Cells.Count > 1 Then
    SOMME_SI_COULEUR = CVErr(xlValue)
    Exit Function
    End If
    For Each Cel In PlageSomme
    If Cel.Interior.ColorIndex = PlageCouleur.Interior.ColorIndex Then Som = Som + Cel
    Next
    SOMME_SI_COULEUR = Som
    End Function
    2) copiez le code suivant dans la fenêtre de code de la feuille concernée (Feuil1 selon votre pièce jointe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.Calculate
    End Sub
    La mise à jour s'opérera lorsqu'une nouvelle cellule sera sélectionnée.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Petite parenthèse...

    Dans ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If PlageCouleur.Cells.Count > 1 Then
    SOMME_SI_COULEUR = CVErr(xlValue)
    Ne serait-ce pas plutôt xlErrValue ?

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour à tous,

    Je vous remercie beaucoup pour vos participations. La solution de PMO2017 fonctionne très bien.

    Encore merci pour votre aide

    Amicalement

    René

    Citation Envoyé par parmi Voir le message
    Petite parenthèse...

    Dans ceci


    Ne serait-ce pas plutôt xlErrValue ?
    Bonjour,

    Non, dans l'exemple que j'ai trouvé c'est bien cette formule.
    Merci
    René

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

Discussions similaires

  1. [XL-MAC 2011] L'aide pour rajouter le code VBA
    Par Gogia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/08/2011, 14h07
  2. [XL-2003] Aide pour complèter un code Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/09/2010, 15h34
  3. Aide pour code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/02/2008, 09h33
  4. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15
  5. [VBA-E] Aide pour éxécuter mon code en cliquant sur un bouton dans excel.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 53
    Dernier message: 29/05/2006, 13h47

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