Somme jusqu'à une cellule de couleur différente

Bonjour,

J'ai un tableau excel comprenant plusieurs sous-tableaux superposé, dont la première ligne de chaque sous-tableau est d'une couleur différente et indique la somme des valeurs inscrites dans les lignes plus basse. Mon classeur entier est protégé puisqu'il comprend plusieurs formules liées à des macros. Je peux insérer des lignes et des sous-tableaux dans mon tableau principal en appuyant sur des boutons qui sont affecté à des macros que j'ai créer. Par-contre, lorsque j'insère une nouveau sous-tableau (je veux pouvoir l'insérer à n'importe quelle ligne), la formule "Somme" qui est inscrite dans la 1ere ligne des sous-tableau ne s'applique plus...

En résumé, j'ai besoin d'une macro ou une fonction qui fera la Somme des données d'une colonnes, jusqu'à la prochaine cellule de couleur (voir K2 dans le fichier joint).

Je joint la feuille de mon classeur concernée.

50141112-test.xlsm (44.57 Ko)

Bonsoir,

je te propose une fonction personnalisée.

à utiliser

=sommejc()
Function sommejc(Optional max = 100)
' fait la somme des cellules situées en dessous de la cellule contenant cette formule
' jusqu'à trouver une cellule de couleur différente
' ou tant que le nombre maximum de lignes n'est pas atteint (par défaut ce maximum est 100)
    Set ref = Application.Caller.Cells
    i = 1
    s = 0
    refc = ref.Offset(1).Interior.Color
    While refc = ref.Offset(i).Interior.Color Or max < 0
        s = s + ref.Offset(i)
        i = i + 1
        max = max - 1
    Wend
    sommejc = s
End Function

Sa fonctionne merci ! Par contre, le calcul se de fait pas automatiquement lorsque j'insère une ligne ou que je change une valeur.

Bonjour,

une correction

Function sommejc(Optional max = 100)
' fait la somme des cellules situées en dessous de la cellule contenant cette formule
' jusqu'à trouver une cellule de couleur différente
' ou tant que le nombre maximum de lignes n'est pas atteint (par défaut ce maximum est 100)
   application.volatile
   Set ref = Application.Caller.Cells
    i = 1
    s = 0
    refc = ref.Offset(1).Interior.Color
    While refc = ref.Offset(i).Interior.Color Or max < 0
        s = s + ref.Offset(i)
        i = i + 1
        max = max - 1
    Wend
    sommejc = s
End Function

Merci !! Sa fonctionne parfaitement !

Finalement il y a encore un problème... Lorsque je modifie des données dans la cellule, la formule se recalcule automatiquement. Par-contre, lorsque j'insère ou supprime une ligne, la formule ne se recalcule pas.

Bonjour,

je ne parviens pas à reproduire ton problème. Tu ne serais pas en mode calcul manuel par hasard ?

sinon, peux-tu mettre un fichier exemple et ce que tu fais pour avoir l'erreur ?

Voici mon classeur complet. La fonction se trouve dans l'onglet "Bordereau sommaire". Lorsque j'insère une ligne avec la Marco (bouton insérer ligne), la fonction ne se recalcule pas automatiquement. Le but est de pouvoir créer un bouton qui me permettra d'insérer un nouveau bordereau (sous-tableau) avec quelques lignes en dessous.


J'ai oublié de mentionner que toutes les cellules qui ne sont pas verte ou orange doivent être protégé (voir macro Protéger classeur).

32141113-test.xlsm (137.56 Ko)

Bonjour,

j'avoue que je ne parviens pas à faire fonctionner cette macro sur ton fichier (il semble y a voir un conflit avec d'autres macros, mais je ne suis pas parvenu à identifier où se situait le problème;

Peut-être pourrais-tu utiliser une autre méthode ? par exemple la fonction standard somme.si en combinaison avec un code associé à chaque ligne à inclure dans l'addition.

=somme.si(A1:A100,1,K1:K100) pour faire la somme de cellules de la colonne K qui ont une valeur 1 en colonne A

Rechercher des sujets similaires à "somme couleur differente"