SOMME sur plage variable

Bonjour,

Dans le fichier joint, comment faire pour obtenir la somme de tous les chiffres d'une catégorie en fonction de la catégorie sélectionnée sachant que le nombre de colonne par catégorie est variable ?

A noter qu'il ne s'agit que d'un fichier exemple, celui sur lequel je travaille comporte des centaines de catégories, je ne peux donc pas utiliser une fonction SI.

Je pensais plutôt à partir sur SOMME( début de plage -->INDIRECT(ADRESSE(6;EQUIV(Catégorie;5:5))) : Fin de plage --> INDIRECT(ADRESSE(20;EQUIV(Fin de catégorie;5:5))) ).

Seulement je ne sais pas formuler EQUIV avec pour valeur cherchée la prochaine cellule non vide, ce qui me permettrait de délimiter la fin de la plage, et deuxièmement il y a peut être plus simple ??

En tout les cas merci à tout ceux qui voudront bien m'apporter leur aide !

Bonsoir Samestoy, bonsoir le forum,

Par formule je ne sais pas faire mais si une solution par macro peut convenir, je te propose le code ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim R As Range 'déclare la variable R (Recherche)
Dim PL As Range 'déclare la variable PL (PLage)

If Target.Address <> "$B$5" Then Exit Sub 'si le changement a lieu ailleurs qu'en B5, sort de la procédure
If Target.Value = "" Then Range("B6").Value = "": Exit Sub 'si B5 est effacée, efface la celllue B6, sort de la procédure
Set R = Rows(5).Find(Target.Value, Range("B5"), xlValues, xlWhole) 'définit la recherche R
Set PL = Application.Intersect(UsedRange, R.MergeArea.EntireColumn) 'définit la plage PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
Range("B6").Value = Application.WorksheetFunction.Sum(PL) 'renvoie en B6 la somme des cellules de la plage PL
End Sub
28samestoy-v01.xlsm (18.29 Ko)

ou sans macros mais à condition de ne pas avoir de cellules fusionnées :

Merci bcp à tous les deux !

Malheureusement ces solutions ne me conviennent pas car je souhaite éviter les macros, et comme Le tableau source est une extraction à partir d'un logiciel de stats, il comporte forcément des cellules fusionnées...que je ne peux pas retravailler à chaque extractions...trop long

Dans ce cas, est-ce que tu peux jouter une ligne ? ce n'est long à taper ... une formule à tirer à droite.

C'est vrai que c'est simple et bien pensé...mais comme je ne serai pas l'utilisateur final et qu'il faudra faire la manip plusieurs fois par jour j'aimerai vraiment qu'il n'y ai rien à faire à part coller les stats.

En plus je suis sur qu'excel peut le faire mais je n'arrive pas à formuler EQUIV(prochaine cellule non vide;etc...)

En tout cas merci d'avoir regardé !

Bonjour

La formule en B6, matricielle à valider avec les 3 touches Ctrl+Maj+Entrée

=SOMME(DECALER($F$6:$F$20;;EQUIV(CAR(CODE($B$5));$F5:$IV5;0)-1;;(SI(ESTNA(EQUIV(CAR(CODE($B$5)+1);$F5:$IV5;0));MAX(($F6:$IV6<>"")*(COLONNE($F6:$IV6)));EQUIV(CAR(CODE($B$5)+1);$F5:$IV5;0))-1)-(EQUIV(CAR(CODE($B$5));$F5:$IV5;0)-1)))

Note: Mon Excel s'arrête à la colonne IV, tu adapteras si besoin

Cordialement

Merci à toi oh grand Amadéus !

J'aurais jamais pensé que ce serait si compliqué... Du coup je n'avais pas précisé que l'on peut utiliser les n° de catégorie, ce qui m'a permit de bidouiller cette autre solution :

=SOMME(INDIRECT(ADRESSE(6;EQUIV(B2;5:5;0))):INDIRECT(ADRESSE(20;EQUIV

(PETITE.VALEUR(INDIRECT(ADRESSE(5;EQUIV(B2;5:5;0)+1)):INDIRECT(ADRESSE(5;EQUIV(B2;5:5;0)+4));1);

INDIRECT(ADRESSE(5;EQUIV(B2;5:5;0)+1)):XFD5;0)+EQUIV(B2;5:5;0)-1)))

Il y avait sans doute mieux mais je ne maîtrise pas (encore) DECALER et les fonctions matricielles..

Encore merci !

Rechercher des sujets similaires à "somme plage variable"