Changement de couleur cellule : calcul automatique

Résolu
Philifloche Messages postés 16 Statut Membre -  
Philifloche Messages postés 16 Statut Membre -
Bonjour,

J'utilise la formule suivante pour faire des sommes de cellules de couleurs différentes dans une même plage :

Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range) As Variant
'*********************************************************
' Effectuer la somme des cellules en couleur *
'*********************************************************
Dim Cel As Range
Dim Som As Double

If PlageCouleur.Cells.Count > 1 Then
SOMME_SI_COULEUR = CVErr(xlErrValue)
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


La formule fonctionne bien, mais les totaux ne se mettent pas à jour quand je change juste la couleur de fond d'une cellule de la plage.

Si quelqu'un a une réponse, je suis preneuse.

Merci.

3 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Il n'existe pas d'évènement exploitable lors du changement de couleur d'une cellule, donc pas de solution miracle !

    On peut améliorer la fréquence de calcul en ajoutant Application.volatile (ligne 7) pour que la fonction soit calculée à chaque modification du contenu d'une cellule, même si ça ne concerne pas la plage de la fonction :
    Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range) As Variant
    '*********************************************************
    ' Effectuer la somme des cellules en couleur *
    '*********************************************************
    Dim Cel As Range
    Dim Som As Double
      Application.Volatile
      If PlageCouleur.Cells.Count > 1 Then
        SOMME_SI_COULEUR = CVErr(xlErrValue)
        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

    Mais ce n'est pas suffisant, on peut aussi provoquer le calcul au changement de cellule sélectionnée en ajoutant dans le module de la feuille :
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Application.Calculate
    End Sub
    

    C'est pas l'idéal mais c'est déjà mieux.

    On pourrait aussi utiliser OnTime mais c'est plus lourd (et inutilement chronophage) .

    1
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      On peut améliorer la fréquence de calcul en ajoutant Application.volatile (ligne 7) pour que la fonction soit calculée à chaque modification du contenu d'une cellule
      ou avec F9
      eric
      0
    2. Philifloche Messages postés 16 Statut Membre
       
      Bonjour,

      Merci beaucoup, mais ça ne solutionne pas vraiment mon souci. :) Je ne touche plus au contenue des cellules une fois créées. Je change simplement la couleur.
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Dans ce cas s'adresser à MS qu'ils fassent évoluer excel et ajoutent des événements.
      Pas d'autre solution actuellement que ce vient de t'expliquer Patrice.
      eric
      0
  2. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    bonsoir,

    Pourrais-tu mettre un fichier anonymisé à la disposition, avec des explications

    Slts
    0
    1. Philifloche Messages postés 16 Statut Membre
       
      Bonjour,
      C'est mon premier post sur ce forum. Je ne sais pas comment mettre un fichier... :)
      0
  3. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Bonjour,

    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
    3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
    en bleu souligné ; tu le sélectionnes et tu fais "Copier"
    5) Tu reviens dans ta discussion sur CCM , et dans ton message de réponse tu fais "Coller"

    Slts
    0
    1. Philifloche Messages postés 16 Statut Membre
       
      Bonjour,

      Désolée pour la réponse tardive ; j'ai du m'absenter quelques jours. Voilà le lien : https://www.cjoint.com/c/HBxiUjTvJ3J
      Merci pour ton aide !
      :)
      0
    2. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
       
      Bonjour,

      Et comme ça? GO

      Slts
      0
    3. Philifloche Messages postés 16 Statut Membre
       
      Impossible d'ouvrir le fichier.
      0
    4. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
       
      Re

      tiens, tiens pourtant chez moi le lien fonctionne

      nouvel essai

      https://www.cjoint.com/c/HBxjjBrqmdj

      Slts
      0
    5. Philifloche Messages postés 16 Statut Membre
       
      Même souci. Voilà le message affiché quand je tente d'ouvrir le fichier : "Désolé... Nous avons rencontré un problème dans le contenu de « HBxjjBrqmdj_forum-Test.xlsm »"
      0