Somme de valeurs d'une colonne selon différentes variables

Résolu/Fermé
Carbone1105 Messages postés 6 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 10 avril 2014 - 1 avril 2014 à 17:19
Carbone1105 Messages postés 6 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 10 avril 2014 - 2 avril 2014 à 10:33
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 ??
A voir également:

4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié par Patrice33740 le 1/04/2014 à 17:55
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
Carbone1105 Messages postés 6 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 10 avril 2014
1 avril 2014 à 18:28
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.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
1 avril 2014 à 23:15
hein ????
0
Carbone1105 Messages postés 6 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 10 avril 2014
2 avril 2014 à 09:23
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.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 2/04/2014 à 10:04
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
0
Carbone1105 Messages postés 6 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 10 avril 2014
2 avril 2014 à 10:33
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.
0