Excel - Calculs

Résolu/Fermé
NOEM84820 Messages postés 3 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 28 sept. 2012 à 11:51
NOEM84820 Messages postés 3 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 28 sept. 2012 à 18:29
Bonjour,


Bonjour,
C'est la premiere fois que je fais une demande d'aide sur votre forum j'espere que quelqu'un pourra m'aider car je galère vraiment et ne trouve pas de solutions à mon probleme

Je souhaite faire un traitement de base de données mais ne sais pas comment m'y prendre.

ci dessous, une version simplifiée du cas que je rencontre pour vous expliquer concretement.

Col 1 Col 2
Acteur 1 client a
Acteur 1 client b
Acteur 2 client b
Acteur 2 client c
Acteur 2 client c

Je voudrais savoir pour chaque acteur combien de clients différents il a eu a traiter.

Avec le tableau croisé dynamique, je bloque car par exemple pour l'acteur 2 ci dessus il m'indique 3 clients alors qu'en realité je n'en ai que 2 de clients différents.


Je souhaite savoir pour chaque acteur le nombre de clients différents qui ont été traités par cet acteur.

Mon fichier fait 200 000 lignes.

Merci par avance pour votre aide qui me sera tres tres précieuse !!!

A voir également:

3 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
28 sept. 2012 à 13:32
Salut,

200000 lignes ça fait beaucoup surtout si le nombre de colonne est important.
enfin essaye cette formule

=SOMMEPROD((A1:A20="Acteur 2")*(B1:B20<>""))

tu peux également remplacer le critère dans la formule par l'adresse d'une formule contenant le critère ou une liste de validation comme la cellule D1.
la formule devient

=SOMMEPROD((A1:A20=D1)*(B1:B20<>""))

si cette formule doit être utilisée dans une feuille différente que celle de ta base de donnée nomme tes plages, ex. la plage colonne A des Acteurs nomme la par ex. Act
et la plage Clients nomme la Client

la formule devient quel que soit la feuille
=SOMMEPROD((Act=D1)*(Client<>""))
0
Raymond PENTIER Messages postés 58396 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 094
28 sept. 2012 à 16:12
Bonjour NOEM84820.

Les formules de Mike-31, que je salue amicalement, te calculent combien de fois chaque acteur figure dans le tableau.
Si tu veux, en plus, savoir combien de fois chaque acteur a reçu chaque client, tu remplaces <>"" par ="client c", ce qui donne, en saisissant en E1 le critère client,
=SOMMEPROD((A1:A20="Acteur 2")*(B1:B20="client c"))
=SOMMEPROD((A1:A20=D1)*(B1:B20=E1))
=SOMMEPROD((Act=D1)*(Client=E1))

Comme te l'a conseillé Mike-31, il serait sage de renseigner D1 et E1 par des listes déroulantes de cellule. J'ajoute que pour élaborer les listes-source, tu as intérêt à partir des colonnes A et B, en faisant une suppression des doublons ; ainsi tu évites toute erreur d'orthographe à la saisie.

Cordialement.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 28/09/2012 à 16:48
Bonjour,

en plus léger qu'un sommeprod() tout en conservant un TCD, à condition que col1 et col2 soient triés :
ajouter une colonne avec en C2 :
=OU(A1<>A2;B2<>B1)*1

et faire le TCD sur col1 et col3 (la somme, pas le nb)

exemple : https://www.cjoint.com/?BICqUC3b389

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
NOEM84820 Messages postés 3 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012
28 sept. 2012 à 18:29
MERCI Beaucoup !!!!! eriiic ! ta réponse et ta solution sont parfaitement utiles dans le cadre de ce que je dois traiter sur ma base ! A 18h30 quelle soulagement ! merci a toutes les personnes qui m'ont aidés sur ce sujet ! merci à vous !
0