Tableau croisé dynamique - compter clients actifs

antgrandj

XLDnaute Nouveau
Bonjour à tous,

Je ne suis pas très doué, c'est pourquoi j'ai besoin de votre aide.

J'ai un tableau excel où il y a plusieurs colonnes dont CLIENT - DATE - MOIS - ANNÉE - etc. J'ai besoin de calculer le nombre de clients actifs.
Un client est actif pour 12 mois, c'est-à-dire que dès qu'il commande, il devient actif pour 12 mois. Si il recommande avant la fin des 12 mois, il est réactivé pour 12 mois. Il ne faut donc le compter qu'une seule fois si il a été réactivé durant les 12 mois. Mais si il a été réactivé après 12 mois, il faut le compter une deuxième fois.

Evidemment, j'utilise un tableau croisé dynamique.

Difficile d'être clair. J'ai essayé de faire un petit exemple dans le fichier ci-joint.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Formule.xlsx
    15.3 KB · Affichages: 73
  • Formule.xlsx
    15.3 KB · Affichages: 85
  • Formule.xlsx
    15.3 KB · Affichages: 77

antgrandj

XLDnaute Nouveau
Re : Tableau croisé dynamique - compter clients actifs

Un tout grand merci, ça me parait correct!

Il y a une technique spécial pour étendre la formule à la colonne entière? Parce que je crois qu'en mettant la souris sur le coin inférieur droit de la case et puis en étirant, ça ne marche pas.
 

R@chid

XLDnaute Barbatruc
Re : Tableau croisé dynamique - compter clients actifs

Bonjour,

la formule est matricielle, certainement tu vas avoir un problème de ralentissement du fichier lors de tirage sur toute la colonne comme tu dis. (c'est plus qu'1 milion de lignes)

tu peux mettre ton tableau sous forme de tableau (Onglet : Accueil ==> Style)
puis tu mets la cellule H2 en mode édit (sélectionner la cellule H2, puis taper la touche F2)
en suite valider en matricielle (par la combinaison de touches : Ctrl+Maj+Entree)

@ + +
 

antgrandj

XLDnaute Nouveau
Re : Tableau croisé dynamique - compter clients actifs

Je reviens vers toi.

J'ai une autre requête du même genre mais je ne sais pas si elle est réalisable.

Tout est expliqué dans le fichier excel en pièce jointe. La première feuille les explications et la deuxième la base de données.

Merci d'avance.
 

Pièces jointes

  • Active customers.xlsx
    229.8 KB · Affichages: 97
  • Active customers.xlsx
    229.8 KB · Affichages: 86
  • Active customers.xlsx
    229.8 KB · Affichages: 84

R@chid

XLDnaute Barbatruc
Re : Tableau croisé dynamique - compter clients actifs

Bonjour,
j'ai enlevé des milliers de lignes pour te montrer la procédure puisque c'est trop avec 10000 lignes de le faire avec une matricielle..., tu peux le faire chez toi et attendre un peu de temps pour avoir les résultats puis copier/collage spécial/valeur.
@ + +
 

Pièces jointes

  • Active customers.xlsx
    45.4 KB · Affichages: 107
  • Active customers.xlsx
    45.4 KB · Affichages: 109
  • Active customers.xlsx
    45.4 KB · Affichages: 113

antgrandj

XLDnaute Nouveau
Re : Tableau croisé dynamique - compter clients actifs

Merci pour la réponse.

Je comprends pas à quoi correspondent Col_Dates et Col_clients. Parce qu'en copiant-collant la formule dans un autre tableau, ça ne fonctionne pas.
 

R@chid

XLDnaute Barbatruc
Re : Tableau croisé dynamique - compter clients actifs

Bonjour,
Col_Clients et Col_Dates correspondent aux champs contenant les clients et dates... va voir dans le gestionnaire de noms (Ruban / Onglet : Formules)
@ + + +
 

antgrandj

XLDnaute Nouveau
Re : Tableau croisé dynamique - compter clients actifs

Bonjour,

N'y a-t-il pas une manière moins lourde pour excel d'arriver à la solution? Parce qu'il prend un temps fou juste pour une vingtaine de lignes alors qu'en réalité, j'en ai 40000. Même pour ouvrir le fichier ça prend du temps.

Merci d'avance.
 

antgrandj

XLDnaute Nouveau
Re : Tableau croisé dynamique - compter clients actifs

Petit problème. J'ai oublié de mentionner que je voulais sélectionner les clients qui ont commandé seulement un certain produit (=colonne produit).

J'ai essayé de modifier la formule ainsi:

{=NB(1/FREQUENCE(SI((Col_Dates>=A2)*(Col_Dates<=B2)*(Col_Prod=30);EQUIV(Col_Clients;Col_Clients;0));LIGNE(Col_Clients)-1))}

30 étant la classe du produit recherché.

Mais malheureusement, cela ne marche pas.
 

R@chid

XLDnaute Barbatruc
Re : Tableau croisé dynamique - compter clients actifs

Bonjour,
=NB(1/FREQUENCE(SI((Col_Dates>=A2)*(Col_Dates<=B2)*(Col_Prod=30);EQUIV(Col_Clients;Col_Clients;0));LIGNE(Col_Clients)-1))
en validant en matricielle ça doit fonctionner, mais il faut d'abord définir le champ Col_Prod dans le gestionnaire de noms en veillant qu'il aie la même hauteur que les autres champs...
@ + + +
 

R@chid

XLDnaute Barbatruc
Re : Tableau croisé dynamique - compter clients actifs

Bonjour,
Col_Prod=DECALER(Col_Clients;;1)
mais il n'existe pas sur le fichier fournis, moi j'ai DECALER(Col_Clients;;1) parce qu'on doit décaler Col_Client de une colonne à droite pour avoir la colonne des dates mais pour le Col_Prod je ne sais pas où il se situe pour que je puisse t'aider...
@ + +
 

antgrandj

XLDnaute Nouveau
Re : Tableau croisé dynamique - compter clients actifs

Justement, dans mon fichier que j'utilise, la colonne que j'ai définie dans le gestionnaire de noms Col_Prod est bien celle à côté (droite) de Col_Client donc je suppose que c'est sensé fonctionner puisque je décale de 1.
 

Discussions similaires

Réponses
0
Affichages
101

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof