Somme avec criteres
abourayane2009
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un tableau qui contient:
ColonneA: Numero de comptes de 6 chiffres
Colonne B: intitulé du compte
Colonne C: un montant
je veut fire la somme de la colonne c par criteres.
le critere est : la somme selon la categorie du numero de compte (les 3 premiers chiffres du num cmpt).
j'ai essayé avec somme.si mais je n'arrive pas resoudre le probleme.
j'ai un tableau qui contient:
ColonneA: Numero de comptes de 6 chiffres
Colonne B: intitulé du compte
Colonne C: un montant
je veut fire la somme de la colonne c par criteres.
le critere est : la somme selon la categorie du numero de compte (les 3 premiers chiffres du num cmpt).
j'ai essayé avec somme.si mais je n'arrive pas resoudre le probleme.
A voir également:
- Somme avec criteres
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Somme si ens ou ✓ - Forum Excel
- SOMME SI COULEUR ✓ - Forum Excel
3 réponses
Bonjour,
Si tes comptes vont de A1 a C5, par exemple
=SOMMEPROD((GAUCHE(A1:A5;3)="123")*(C1:C5))
http://www.cjoint.com/14dc/DLhaEUtfDP1_sommeprod.jpg
Si tes comptes vont de A1 a C5, par exemple
=SOMMEPROD((GAUCHE(A1:A5;3)="123")*(C1:C5))
http://www.cjoint.com/14dc/DLhaEUtfDP1_sommeprod.jpg
Bonjour
Rajoute une colonne pour extraire les 3 premiers chiffres du numéro de compte avec la formule =GAUCHE(A2 ;3) à tirer sur toute la colonne
Ensuite tu pourras utiliser la fonction SOUS-TOTAL pour avoir un total par catégorie.
Ou encore un tableau croisé dynamique encore plus rapide
Rajoute une colonne pour extraire les 3 premiers chiffres du numéro de compte avec la formule =GAUCHE(A2 ;3) à tirer sur toute la colonne
Ensuite tu pourras utiliser la fonction SOUS-TOTAL pour avoir un total par catégorie.
Ou encore un tableau croisé dynamique encore plus rapide
Bonsoir Abourayane, bonsoir le forum,
Par formules je ne sais pas faire. Si une solution VBA te convient, essaie comme ça :
Attention ! Ce code renvoie le résultat dans les colonnes E et F qui sont effacé au préalable...
À plus,
ThauTheme
Par formules je ne sais pas faire. Si une solution VBA te convient, essaie comme ça :
Private Sub Macro1() Dim O As Object 'déclare la variable O (Onglet) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim D As Object 'déclare la variable D (Dictionnaire) Dim I As Integer 'déclare la variable I (Incrément) Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire) Dim J As Integer 'déclare la variable J (incrément) Dim SC() As Variant 'déclare la variable SC (Somme par Critère) Dim S As Single 'déclare la variable S (Somme) Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter) TC = O.Range("A1").CurrentRegion 'définit le tableau TC (à adapter) Set D = CreateObject("Scripting.Dictionary") 'définit le dictionaire D For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC (en partant de la seconde) D(Left(TC(I, 1), 3)) = "" 'alimente le dictionnaire D Next I 'prochaine ligne de la boucle TMP = D.keys 'récupère dans le tableau temporaire TTMP, la liste du dictionnaire D sans doublons For J = 0 To UBound(TMP) 'boucle 1: sur tous les éléments du tableau TMP ReDim Preserve SC(1, J) 'redimensionne le tableau SC (2 lignes : ligne 0 et ligne 1; J colonnes) SC(0, J) = TMP(J) 'définit l'élément de la première ligne du tableau SC (le critère TMP(J)) For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC (en partant de la seconde) 'si les trois premiers caractères de la valeur en TC, ligne I, colonne 1 (=> colonne A) sont identiques au ctitère TMP(J) 'alors la somme S est égale à elle-même plus la valeur en TC, ligne I colonne 3 (=> colonne C) If Left(TC(I, 1), 3) = TMP(J) Then S = S + TC(I, 3) Next I 'prochaine ligne de la boucle 2 SC(1, J) = S 'définit l'élément de la seconde ligne du tableau SC (la somme S) S = 0 'réinitialise la somme S Next J 'prochain élément du tableau TMP Range("E1").CurrentRegion.Clear 'vide les anciennes données Range("E1") = "Critère": Range("F1") = "Somme" 'étiquettes en E1 et F1 'en E2, récupère le tableau SC transposé (inversikon lignes et colonnes Range("E2").Resize(UBound(SC, 2) + 1, UBound(SC, 1) + 1) = Application.Transpose(SC) End Sub
Attention ! Ce code renvoie le résultat dans les colonnes E et F qui sont effacé au préalable...
À plus,
ThauTheme