Rechercher : dans
Par :

Tableau croisé dynamique

Dernière réponse le 14 nov 2008 à 19:25:20 dmaestro, le 13 nov 2008 à 06:46:03 
 Signaler ce message aux modérateurs

Bonjour,
Malgré l'aide de ce forum, je n'ai pas réussi à résoudre mon Pb de Tableau croisé dynamqieu (Tcd).
dans ce tcd, j'ai des lignes avec date/N°facture/N°client , ttc
Je veux avoir dans les lignes de totalisation le NOMBRE de FACTURES: comme dans ma feuille sources, je peux avoir 5 lignes pour une facture et 10 pour la seconde facture, a la zone de totalisation il me renvoie non pas 2, puisque j'ai 2 factures <>, mais 15, qui est le nombre de fois qu'il voir apparaitre un N° de facture ou le Nb d'occurences d'un N° de facture. Moi je veux savoir le Nb de factures: donc 2: Merci pour votre aide!

Configuration: Windows XP
Internet Explorer 7.0

1

eriiic, le 13 nov 2008 à 07:27:47

Bonjour,

si tu ne veux que ça tu peux le faire avec :
=SOMMEPROD((FREQUENCE(B2:B100;B2:B100)>0)*1)

eric

Répondre à eriiic

2

dmaestro, le 13 nov 2008 à 09:27:05

Merci Eric,
La formule marche effectivement si je l'utilise dans mon tableau sources des données: mais je ne parviens pas à creer un champ ou un element dans tcb. Je ne sais qu'exploiter des colonnes du tableau sources , mais je ne sais pas creer un champ avec cette fonction : =SOMMEPROD((FREQUENCE(J2:J160;J2:J160)>0)*1) dans le tcd. DMAESTRO

Répondre à dmaestro

3

dmaestro, le 13 nov 2008 à 10:14:07

Voila la suite de mes recherches: comme je ne parveins pas à créer un champ calculé ou autre dans ma feuille de travail du TCD, j'ai introduit la formule que tu m'as donnée sous la forme =SOMMEPROD((FREQUENCE(J:J;J:J)>0)*1) dans mon tableau des données. Pour la 1ere ligne c'est parfait, je tappe la formule et la réponse que j'ai est bien celle que j'attend: c'est quand je veux étendre la formule sur les autres lignes (50588!) que ça plante Excel, qui prend alors 100% des ressources du système! Même si j'essaie dans un premier temps de n'étendre que sur 100 lignes, ça fait pareil!

Répondre à dmaestro

4

eriiic, le 13 nov 2008 à 10:47:02

Qcq chose m'échappe, pourquoi tu veux l'étendre cette formule ?
Il n'y a qu'un seul 'nombre de commandes', et je ne vois pas à quoi il pourrait servir dans un TCD (à part en rappel dans une cellule).

Répondre à eriiic

5

dmaestro, le 13 nov 2008 à 10:57:44

Client DateFac NO Fac N°Article TTC
100 03/11/2008 150 008869 20€
100 05/11/2008 151 013439 12€
100 05/11/2008 151 016005 48€
100 05/11/2008 151 020276 12€
048 07/11/2008 152 008869 20€
048 07/11/2008 152 013439 12€
048 07/11/2008 152 016005 48€
J'ai ainsi plus de 50000 lignes dans mon tableau source. J'ai bien sur bien d'autres données. Quand l'amène ma zone NO Fac dans le TCD il me dit 4 pour le premier client et 3 pour le 2eme client. Moi je veux 2 et 1. Donc j'ai voulu mettre un 6eme colonne dans mon tableau sources pour obtenir le Nb de Fact avec la formule que tu m'as donnée PUIS il me semble que je dois la répendre sur toute la colonne. Voila comment je procède.

Répondre à dmaestro

6

eriiic, le 13 nov 2008 à 12:56:32

Ahhhh, c'est nombre de facture par client, pas pareil...
Pas trop le temps là, plus tard ou qcq'un d'autre

Répondre à eriiic

9

dmaestro, le 13 nov 2008 à 13:53:56

Merci pour ton attention. Je viens de recevoir une autre idée, bcp moins académique, mais qui me dépanne pour le moment. Si tu as le temps de regarder une solution liée à une fonctionnalité plus efficace pour toutes les demandes du Tcb, merci de me la communiquer. Cdt

Répondre à dmaestro

7

xkristi, le 13 nov 2008 à 13:15:47

Salut
Une façon de faire simple
Faut trier ta feuille par N° de Facture (une facture appartient à un seul client)
tu rajoutes une colonne avec la fonction SI
et plus de problème dans le TCD si tu prends celle colonne

Ton fichier avec cette solution ici :

http://cjoint.com/?lnnkQs6eFS xkristi
Je ne détiens point la vérité , je te la laisse  volontiers ­...

Répondre à xkristi

8

dmaestro, le 13 nov 2008 à 13:51:30

Merci pour cette idée, car ça a l'air de bien répondre!

Répondre à dmaestro

10

eriiic, le 13 nov 2008 à 23:07:17

Coucou xkristi ;-)

Question simple, réponse un peu moins évidente...
Si tu peux trier par client puis par n°facture on peut le faire encore par formule avec une colonne supplémentaire (que tu peux masquer), sinon il faut envisager vba.
- en F2 : =A2=A1
- en G2 : =SI(A2=A1;G1;EQUIV(FAUX;DECALER(F2;1;0;65536-LIGNE();1);0))

recopier vers le bas autant que nécessaire plus 1 ligne (sinon ça va compliquer singulièrement la formule)

exemple : classeur1.xls

eric

Répondre à eriiic

11

dmaestro, le 14 nov 2008 à 08:33:16

Merci Eric pour ton aide.
Toutefois, c'est le même resultat que ce que j'évoque plus haut, si j'amène N°Fac sur mon TcB avec l'opérateur Nombre: il me donne le nombre de LIGNES du ticket ou de la facture et non pas le NOMBRE de FACTURES! Moi je veux comme réponse: 2 pour le client 100 et 1 pour le client 48. Ca a l'air simple ... mais ca ne l'est pas!

Répondre à dmaestro

12

eriiic, le 14 nov 2008 à 08:39:25

Heuuuu, c'est vrai que j'ai fait ça vite fait hier soir sans tout relire, désolé ;-)

Répondre à eriiic

13

dmaestro, le 14 nov 2008 à 09:01:52

Pas grave! Je dis ca pcq moi ca fait un bon moment que je bataille sur le meme Pb! Merci. Bonne journée

Répondre à dmaestro

14

eiram, le 14 nov 2008 à 10:13:37

Pourquoi ne pas rajouter une colonne avec la fonction suivante (C = colonne N° facture)

=SI(C2=C3;0;1)

Il faut avoir classer la liste par n° de facture au préalable

Dans le TCD la somme de cette colonne te donnera le nombre de facture par client

Répondre à eiram

15

xkristi, le 14 nov 2008 à 11:24:10

Salut à tous
Ben , personne n'a lu ma solution ? hein eiram

petit coucou à Eriic

xkristi
Je ne détiens point la vérité , je te la laisse  volontiers ­...

Répondre à xkristi

18

eiram, le 14 nov 2008 à 14:05:25

Désolé pas été voir le détail de ton tableau

Répondre à eiram

16

eriiic, le 14 nov 2008 à 13:11:26

Ben oui, c'est vrai ça, finalement ça répond bien à la question calimero ;-)
dmaestro regarde de plus près le post 7, sans oublier de regarder le 2ème onglet TCD

Répondre à eriiic

17

dmaestro, le 14 nov 2008 à 13:31:17

Oui je suis tout à fait d'accord, C'est la solution la meilleure pour l'instant et j'en ai remercié XKristi. Mais néanmoins, ça n'est plus 'dynamique'! J'ai d'autres résultats à exploiter de ce TCD, et cette solution qui rend les lignes interdépendantes, n'est pas totalement satisfaisante... Mais je m'ensatisfais totalement dans l'immédiat! Merci a chacun. A+

Répondre à dmaestro

19

eriiic, le 14 nov 2008 à 15:49:32

Ok, bon alors dans le même esprit de la solution de xkristi je te propose en F2 :
=SI(EQUIV(C2;C:C;0)=LIGNE();1;0)
à recopier vers le bas.
Je n'ai pas le temps de tester mais je pense que ça ne devrait pas être trop loin, les tris ne sont plus nécessaire...
eric

Répondre à eriiic

20

dmaestro, le 14 nov 2008 à 18:13:15

Elle est beeeeeellle! Mais c'est le même Pb décrit sur le post 17: elle n'est pas dynamique sur le tcd. Merci. A+

Répondre à dmaestro

21

 eriiic, le 14 nov 2008 à 19:25:20

Bien sûr qu'elle est belle, elle toute fraiche !!!
elle n'est pas dynamique sur le tcd
Tu peux développer un stp, car un tcd nécessite toujours d'être rafraichi avec le ! (actualiser les données) si les données évoluent

Et si tu mettais ton tcd sur cijoint.fr et collais le lien ici qu'on y voit un peu plus clair ?

Répondre à eriiic