somme plage si caractere couleur

fredvic

XLDnaute Nouveau
J'aimerai faire la somme d'une plage contenant des valeurs numériques si celles ci ont une couleur de caractère defini (verte par exemple)
Les couleurs sont définies par l'utilisateur
La fonction somme si me semble un peu juste
je crois qu'il faut passer par une macro mais je n'ai aucune notion
 

bqtr

XLDnaute Accro
Re : somme plage si caractere couleur

Bonjour fredvic

Une fonction perso en VBA, la somme se fait si la couleur de police est différente de "Automatique". Donc si la couleur choisie est 1 (noir) elle sera comptabilisée aussi.
Elle s'utilise comme une fonction classique d'Excel ex: en B1 tu entres =SomCoul(A1:A10)

Code:
Function SomCoul(plg As Range)
Dim cell As Range, TT As Long

Application.Volatile
For Each cell In plg
    If cell.Font.ColorIndex <> xlColorIndexAutomatic Then
       TT = TT + cell
    End If
Next
SomCoul = TT
End Function
Bonne journée
 

bqtr

XLDnaute Accro
Re : somme plage si caractere couleur

Re,

Suite à ton MP, voici quelques explictions :

Pour coller la macro dans un module de code, ouvre VBA en faisant ALT+F11.
Pour afficher l'explorateur de projets en haut à gauche, fait CTRL+R.
Sélectionne le projet qui correspond à ton fichier : VBAPoject(tonfichier).
Fait Insertion/Module et dans la partie droite colle le code.

Function SomCoul(plg As Range) : La fonction a un argument plg, qui correspond à une plage de cellule (1,2 3 .../...).
Dim cell As Range, TT As Single : déclaration des variables, cell correspond à une cellule et TT à un nombre.
Application.Volatile : permet le recalcul à chaque modification dans la feuille, comme ca les résultats sont toujours à jour.
For Each cell In plg : pour chaque cellule de la plage sélectionnée.
If cell.Font.ColorIndex <> xlColorIndexAutomatic Then : Si la police de caractère de la cellule (cell) est différente de "Automatique". (Dans 99,99% des cas, la police de la feuille est mise sur Automatique).
TT = TT + cell : Addition des valeurs de chaque cellule si elle répond à la condition.
End IF : fin du test sur la cellule.
Next : fin de la boucle sur la plage sélectionnée.
SomCoul = TT : Renvoie le total des valeurs des cellules qui correspondent à la condition.
End Function : Fin de la fonction.

Les couleurs ont un index de 1 à 44 (je crois), 1 = noir, 3 = rouge .../...
Si c'est toujours la même couleur de police, on peux tester avec son index comme ceci :
If cell.Font.ColorIndex = 3 Then. Mais comme tu précises que c'est l'utilisateur qui sélectionne sa couleur, en passant par
<> xlColorIndexAutomatic, c'est plus pratique. Cela a un défaut : Si tu as plusieurs couleurs de police dans la plage sélectionnée, la fonction fera le calcul sur toutes ces cellules, pas seulement sur une seule couleur.

Voilà, si problème n'hésite pas à demander.

Bonne soirée






 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : somme plage si caractere couleur

bonjour bqtr, pierre olivier

Voici un fichier avec 35 fonctions perso sur les couleurs de fond, de caractere, gras italique souligné

tu peux nombrer, sommer, faire la moyenne, cherche le mini, le maxi

bonne soirée
 

Pièces jointes

  • wil_fonction.zip
    18.3 KB · Affichages: 372
  • wil_fonction.zip
    18.3 KB · Affichages: 392
  • wil_fonction.zip
    18.3 KB · Affichages: 392

bqtr

XLDnaute Accro
Re : somme plage si caractere couleur

Bonjour wilfried,

Merci pour ton petit fichier, trés interessant, cependant dans le dernier groupe de fonction : Toute les couleurs, ces dernières provoquent des erreurs.

Ex : Function nb_inter(plage As Range) As Long, A la fin tu mets nb_color = nb au lieu de nb_inter = nb. C'est la même chose pour les autres.

C'est facile à corriger quand tu connais un peu, mais pour un débutant ca peut-être génant.

Ce fichier va rejoindre ces petits camarades dans mon dossier de demo :D

Bonne journée








 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : somme plage si caractere couleur

Merci Pierre Olivier, je regarde de suite

fichier corrigé joint
 

Pièces jointes

  • wil_fonction.zip
    18.3 KB · Affichages: 298
  • wil_fonction.zip
    18.3 KB · Affichages: 296
  • wil_fonction.zip
    18.3 KB · Affichages: 292
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 452
Messages
2 088 541
Membres
103 879
dernier inscrit
JJB2