Somme de valeurs d'une colonne selon différentes variables [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
10 avril 2014
-
Messages postés
6
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
10 avril 2014
-
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 ??

4 réponses

Messages postés
8170
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
13 août 2020
1 447
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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58241 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
10 avril 2014

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.
Messages postés
8170
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
13 août 2020
1 447
hein ????
Messages postés
6
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
10 avril 2014

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.
Messages postés
16178
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
14 août 2020
3 005
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
Messages postés
6
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
10 avril 2014

J'ai du mal à comprendre ta formule. Ceci dit j'ai essayé la formule suivante et ça fonctionne !

=SI(A2&B2&F2=A3&B3&F3;"";SOMME.SI.ENS(C:C;A:A;A2;B:B;B2;F:F;F2))


Merci à vous pour votre aide.