Somme par couleur - Exemples de code VBA

La fonction suivante calcule la valeur totale de toutes les cellules d'une plage particulière qui sont d'une couleur particulière :

Malheureusement, il n'y a pas de fonction SUMIF à additionner en fonction de la couleur de la cellule. Si vous souhaitez additionner par couleur, vous devrez créer une fonction dans VBA.
Pour utiliser ce code : Ouvrez Visual Basic Editor (Alt + F11), Insérez un nouveau module (Insertion > Module) et copiez-collez le code souhaité dans le module.

Fonction à additionner par couleur

1234567891011121314151617181920 Fonction Color_By_Numbers (Color_Range As Range, Color_Index As Integer) As Double' Dim Color_By_Numbers en tant que doubleCellule faible'Regardera les cellules qui sont dans la plage et si'la propriété color interior correspond à la couleur de cellule requise'alors il résumera'Loop Through gammePour chaque cellule de Color_RangeSi (Cell.Interior.ColorIndex = Color_Index) AlorsColor_By_Numbers = Color_By_Numbers + Cell.ValueFin siCellule suivanteFonction de fin

Il s'agit en fait de « somme par couleur » - donc si vous connaissez la palette de 56 couleurs d'Excel et que vous savez par exemple que la couleur 4 est vert clair, alors l'appel suivant :

Couleur_Par_Numéros("A1:P20",4)

additionnera les valeurs de toutes les cellules de la plage A1:P20 qui sont de couleur vert clair.

Pour faciliter l'utilisation de la fonction, le sous-programme suivant calculera la valeur totale pour chacune des 56 couleurs d'Excel. Il donne également toute la palette de sorte qu'il est facile de voir le numéro d'index pour chaque couleur.

Le sous-programme est invoqué sur la feuille 1 et examine la plage

12345678910111213141516171819202122 Private Sub CommandButton1_Click()'Regardera chaque couleur et produira un tableau récapitulatif des valeurs'sur la feuille 1 dans la cellule A1 et vers le basDim Current_Color_Number en tant qu'entierDim Color_Total As DoublePour Current_Color_Number = 1 à 56Color_Total = Color_By_Numbers(Sheets("Sheet2").Range("a11:aa64"), Current_Color_Number)Worksheets("Sheet1").Range("A1").Offset(Current_Color_Number, 0) = Current_Color_NumberWorksheets("Sheet1").Range("A1").Offset(Current_Color_Number, 0).Intérieur.ColorIndex = Current_Color_NumberSi Color_Total 0# AlorsWorksheets("Sheet1").Range("a1").Offset(Current_Color_Number, 1).Value = Color_TotalFin siNext Current_Color_NumberFin du sous-marin

Pour télécharger le fichier XLS, veuillez cliquer ici

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave