Somme de valeurs d'une colonne selon différentes variables
Résolu
Carbone1105
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Carbone1105 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Carbone1105 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je souhaite faire la somme d'un métrage et la reporter dans la colonne d'à côté, selon plusieurs variables :
- même client
- même conducteur
- même pays
Selon l'exemple ci-dessous, je souhaiterai que la 4ème colonne que j'ai reportée à la main me soit calculée automatiquement via un projet VBA.
CONDUCTEUR CLIENT METRAGE SOMME METRAGE pays
POURRE CRAY VALLEY 0,6 UK
POURRE CRAY VALLEY 0,6 1,2 UK
POURRE CRAY VALLEY 0,4 0,4 FR
MONNIER CRAY VALLEY 1 FR
MONNIER CRAY VALLEY 1 2 FR
L'outil additionne 0,6 + 0,6 et donne 1,2 dans la colonne d'à côté car le conducteur est le même (POURRE), le client est le même (CRAY VALLEY) et le pays est le même (UK). Sur la ligne suivante, toujours le même conducteur, même client mais pays différent (FR) donc l'outil ne reporte que 0,4 sans addition quelconque puisque les lignes suivantes ont encore une variable différente : même pays (FR) mais conducteur MONNIER.
J'ai pensé réaliser une boucle...
Tant que le client est le même, que le conducteur est le même et que le pays est le même alors somme des valeurs qui se suivent dans la colonne métrage.
Cependant, étant novice en programmation VBA, je ne vois pas du tout comment faire.
Pouvez-vous m'aider ??
Je souhaite faire la somme d'un métrage et la reporter dans la colonne d'à côté, selon plusieurs variables :
- même client
- même conducteur
- même pays
Selon l'exemple ci-dessous, je souhaiterai que la 4ème colonne que j'ai reportée à la main me soit calculée automatiquement via un projet VBA.
CONDUCTEUR CLIENT METRAGE SOMME METRAGE pays
POURRE CRAY VALLEY 0,6 UK
POURRE CRAY VALLEY 0,6 1,2 UK
POURRE CRAY VALLEY 0,4 0,4 FR
MONNIER CRAY VALLEY 1 FR
MONNIER CRAY VALLEY 1 2 FR
L'outil additionne 0,6 + 0,6 et donne 1,2 dans la colonne d'à côté car le conducteur est le même (POURRE), le client est le même (CRAY VALLEY) et le pays est le même (UK). Sur la ligne suivante, toujours le même conducteur, même client mais pays différent (FR) donc l'outil ne reporte que 0,4 sans addition quelconque puisque les lignes suivantes ont encore une variable différente : même pays (FR) mais conducteur MONNIER.
J'ai pensé réaliser une boucle...
Tant que le client est le même, que le conducteur est le même et que le pays est le même alors somme des valeurs qui se suivent dans la colonne métrage.
Cependant, étant novice en programmation VBA, je ne vois pas du tout comment faire.
Pouvez-vous m'aider ??
A voir également:
- Somme de valeurs d'une colonne selon différentes variables
- Formule somme excel colonne - Guide
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Somme si couleur - Guide
4 réponses
Bonjour,
Pas besoin de VBA, une simple formule suffit en D1 (avec excel 2007 ou plus récent) :
=SOMME.SI.ENS($C$2:$C$6;$A$2:$A$6;$A2;$B$2:$B$6;$B2;$E$2:$E$6;$E2)
ou pour les versions 2003 et avant :
=SOMMEPROD($C$2:$C$6;($A$2:$A$6=$A2)*1;($B$2:$B$6=$B2)*1;($E$2:$E$6=$E2)*1)
Cordialement
Patrice
Pas besoin de VBA, une simple formule suffit en D1 (avec excel 2007 ou plus récent) :
=SOMME.SI.ENS($C$2:$C$6;$A$2:$A$6;$A2;$B$2:$B$6;$B2;$E$2:$E$6;$E2)
ou pour les versions 2003 et avant :
=SOMMEPROD($C$2:$C$6;($A$2:$A$6=$A2)*1;($B$2:$B$6=$B2)*1;($E$2:$E$6=$E2)*1)
Cordialement
Patrice
Merci Patrice.
J'ai essayé la formule.
Le problème est que lorsque je déroule la formule, cela me créé des doublons sur les lignes pour lesquelles la somme est réalisée.
C'est-à-dire :
Si conducteur ligne 1 = conducteur ligne 2 / etc... (toutes mes variables sont égales pour les 2 premières lignes) , en écrivant la formule dans une nouvelle colonne de la ligne , cela va bien additionner le métrage de la ligne 1 et 2 et s'arrêter là puisque la ligne 3 est différente. Cependant lorsque je déroule la formule, la même addition va aussi se faire sur la ligne 2.
J'ai essayé la formule.
Le problème est que lorsque je déroule la formule, cela me créé des doublons sur les lignes pour lesquelles la somme est réalisée.
C'est-à-dire :
Si conducteur ligne 1 = conducteur ligne 2 / etc... (toutes mes variables sont égales pour les 2 premières lignes) , en écrivant la formule dans une nouvelle colonne de la ligne , cela va bien additionner le métrage de la ligne 1 et 2 et s'arrêter là puisque la ligne 3 est différente. Cependant lorsque je déroule la formule, la même addition va aussi se faire sur la ligne 2.
Admettons que je n'ai que 3 colonnes.
Une colonne 1 : conducteurs
Une colonne 2 : métrage
Une colonne 3 : qui serve à reporter ma formule / cad somme du métrage si l'ensemble de la colonne 1 est la même.
Exemple :
Ligne 1 : conducteur : GERARD / métrage : 0,4
Ligne 2 : conducteur : GERARD / métrage : 0,8
Ligne 3 conducteur : FRED / métrage : 1,9
Je veux que dans la colonne 3, me soit reportée 1,2 à la ligne 1 OU 2 car la somme de 0,4 et 0,8 (même conducteur) est égale à 1,2. Et je veux que me soit reportée 1,9 à la ligne 3.
Donc résultat attendu :
Ligne 1 : 0
Ligne 2 : 1,2
Ligne 3 : 1,9
Et non :
Ligne 1 : 1,2
Ligne 2 : 1,2
Ligne 3 : 1,9
Car là je fais 2 fois le même calcul. Il y a doublon.
J'espère avoir été plus claire cette fois.
Une colonne 1 : conducteurs
Une colonne 2 : métrage
Une colonne 3 : qui serve à reporter ma formule / cad somme du métrage si l'ensemble de la colonne 1 est la même.
Exemple :
Ligne 1 : conducteur : GERARD / métrage : 0,4
Ligne 2 : conducteur : GERARD / métrage : 0,8
Ligne 3 conducteur : FRED / métrage : 1,9
Je veux que dans la colonne 3, me soit reportée 1,2 à la ligne 1 OU 2 car la somme de 0,4 et 0,8 (même conducteur) est égale à 1,2. Et je veux que me soit reportée 1,9 à la ligne 3.
Donc résultat attendu :
Ligne 1 : 0
Ligne 2 : 1,2
Ligne 3 : 1,9
Et non :
Ligne 1 : 1,2
Ligne 2 : 1,2
Ligne 3 : 1,9
Car là je fais 2 fois le même calcul. Il y a doublon.
J'espère avoir été plus claire cette fois.
Bonjour
comme l'a très bien écrit Patrice, il n'y a pas besoin de VBA pour traiter ton souci
en C1 à tirer vers le bas (exemple avec 8 lignes et 6 lignes avec un nom en colonne A))
=SI(OU(ESTVIDE(A1);NB.SI(A$1:A1;A1)>1);"";SOMME.SI(A$1:A$8;A1;B$1:B$8))
toujours penser Excel avant de penser VBA :o)
Michel
comme l'a très bien écrit Patrice, il n'y a pas besoin de VBA pour traiter ton souci
en C1 à tirer vers le bas (exemple avec 8 lignes et 6 lignes avec un nom en colonne A))
=SI(OU(ESTVIDE(A1);NB.SI(A$1:A1;A1)>1);"";SOMME.SI(A$1:A$8;A1;B$1:B$8))
toujours penser Excel avant de penser VBA :o)
Michel