XL 2010 Calculer chiffre d'affaires mensuel pour intervalle [2016-2026]

NicolasE

XLDnaute Junior
Bonjour tout le monde,
Me revoila sur le forum pour un probleme auquel je n'ai pas la solution.
Merci par avance pour votre expertise!

Je cherche à calculer le chiffre d'affaires mensuel total d'une pizzeria ainsi que trouver le meilleur client du mois (celui qui a le plus dépensé sur 1 mois).

Je joins un fichier excel pour bien visualiser le probleme.

La ou je bloque c'est que je n'arrive pas à définir de manière automatique les changements de mois afin de calculer le Chiffre d'affaires.

je pense qu'il fau passer par le VBA (je prefere d'ailleurs) mais je n'arrive pas à boucler avec des dates en parametre variables.

Petite difficulté supplementaire : sur le doc ci joint j'ai uniquement 5 noms de clients mais en réalité mon fichier comporte 1000 noms sachant que de noveaux noms peuvent s'ajouter.

Pouvez vous m'aider svp?
Merci beaucoup Par avance

NicolasE
 

Pièces jointes

  • tableau_CA.xlsx
    25.4 KB · Affichages: 83

ROGER2327

XLDnaute Barbatruc
Bonsoir.

Code complété pour le décompte par couleur dans le deuxième tableau, plus quelques corrections mineures.
En prime, quelques résultats d'essais sur une base de près de cinq millions de cellules.​

Bonne nuit.

ℝOGER2327
#8355


Lundi 2 Haha 144 (Dissolution d’Edgar Poe, dinomythurge - fête Suprême Quarte)
16 Vendémiaire An CCXXV, 9,5837h - belle-de-nuit
2016-W40-5T23:00:03Z
 

Pièces jointes

  • Tableau_CA_v2-1.xlsm
    81.1 KB · Affichages: 56
  • Tableau_CA_stat.xlsx
    14.8 KB · Affichages: 55

job75

XLDnaute Barbatruc
Bonjour Roger,

Il est certain que pour "Toutes" on peut éviter d'analyser les couleurs, cela va bien sûr plus vite.

Je ne l'ai pas fait pour rester homogène avec les autres choix et pouvoir ainsi comparer.

Mais de toute façon vos tests montrent que votre méthode est plus rapide que la mienne.

A+
 

job75

XLDnaute Barbatruc
Re,

J'ai quand même dans ce fichier (4) modifié le code pour aller plus vite avec "Toutes".

Pour le 2ème tableau on pourrait utiliser un seul Dictionary + Split.

Mais je ne crois pas que ça irait plus vite...

A+
 

Pièces jointes

  • tableau_CA(4).xlsm
    74.4 KB · Affichages: 50
Dernière édition:

NicolasE

XLDnaute Junior
Bonjour Job75,

Merci encore pour ton support.
Je suis entrain de comprendre le code et j'ai beaucoup de difficultés à comprendre cette operation
"d(t(1, j)) = d(t(1, j)) + t(i, j)" --> dans la sub MAJ_1

SI je prend coul = toutes pour illustrer d'un exemple, Je comprends que cette opération doit sommer tous les montants mais: - Comment l’opération sait elle qu'il faut s’arrêter à la fin de chaque mois?
- OU est ce indiqué qu'il faut mettre le montant total mensuel dans la bonne cellule du tableau de la feuille "Tableaux 1 & 2" ?

Je n'arrive pas à comprendre ou tu donnes ces instructions dans ce code!

Merci encore pour ton aide, je tiens le bon bout comme on dit!

PS : je précise que j'ai décortiqué tout le code qui précédé et que jusque là je comprenais tout..

Bonne journée

NicolasE
 

job75

XLDnaute Barbatruc
Bonsoir NicolasE,
Comment l’opération sait elle qu'il faut s’arrêter à la fin de chaque mois?
- OU est ce indiqué qu'il faut mettre le montant total mensuel dans la bonne cellule du tableau de la feuille "Tableaux 1 & 2" ?
Le Dictionary fait des sous-totaux par mois, justement avec l'instruction que vous mentionnez.

C'est un outil très puissant et rapide, pour bien comprendre son fonctionnement il faut y passer du temps :rolleyes:

Ensuite les sous-totaux sont entrés non pas dans les cellules mais dans les éléments du tableau t (matrice).

Le tableau t est enfin restitué en bloc dans la plage, c'est beaucoup plus rapide.

A+
 

NicolasE

XLDnaute Junior
Merci pour ta reponse Job75

For i = 2 To UBound(t)
For j = 2 To ncol

If t(i, j) Then
If tout Then
d(t(1, j)) = d(t(1, j)) + t(i, j)

je me suis renseigné et donc le dicitonary, ce dernier stock des paires d'élements

Pourrais tu stp Job75 m'écrire d(t(1, j)) = d(t(1, j)) + t(i, j) avec une phrase explicativ
 

NicolasE

XLDnaute Junior
désolé probleme de pC.

je continue :

Pourrais tu stp Job75 m'écrire d(t(1, j)) = d(t(1, j)) + t(i, j) avec une phrase explicative ou un shema explicatif disant ou sont stocké les valeurs et comment elles s’additionnent?

Ma question est assez imprécise mais je n'arrive pas à piger comment ca marche!

A bientot

NicolasE
 

job75

XLDnaute Barbatruc
Re,

t(1, j) ce sont les clés (keys) du Dictionary, d(t(1, j)) ce sont les items qu'on lui affecte.

Ici les items cumulent (additionnent) des valeurs (les CA) pour une même clé (le mois).

Je n'irai pas plus loin dans mes explications, à vous de vous renseigner sur le web ou ailleurs.

Bonne nuit.
 
Dernière édition:

NicolasE

XLDnaute Junior
Bonjour,
Merci encore Job75 pour les explications.
J'ai à présent bien compris le principe.

J'ai 3 petites questions :
- Dans la restitution lorsque tu mets resize(13) , que représente le 13?
s'agit il du nombre de Ligne ou de colonnes?

- quand tu attribue à couleur un numero (23 pour rouge par exple), à quoi cela sert il stp?

- 3eme question : je souhaite pouvoir avoir tous les CA (correspondant aux couleurs bleu, rouge et toutes) sur mon tableau CA de la feuille Tableaux 1 & 2 lorsque je clique sur le bouton MAJ 1. Comment puis je faire stp?

Exple de ce que je souhaite en final :


CA 2016
Janv CA rouge
Janv CA bleu
Janv CA toutes

--> Est ce que ça ne risque pas avec cet affichage de ralentir d'avantage le programme lors de la compilation?

je pense en avoir fini avec mes questions. Une fois tes reponses je pourrai finaliser ce projet!
Merci encore

Bonne journée

NicolasE
 

job75

XLDnaute Barbatruc
Bonsoir NicolasE,

13 c'est bien sûr le nombre de lignes des tableaux (ligne d'en-têtes + 12 mois).

23 c'est le code (ColorIndex) de la couleur bleu (3 pour la couleur rouge).

Pour la 3ème question j'ai créé 6 tableaux de résultats, ce n'est pas tout à fait ce que vous voulez mais je n'ai pas envie de me casser la tête davantage.

La durée d'exécution sera à peu près la même que précédemment puisque le tableau source n'est analysé qu'une fois.

Fichier (6).

Bonne nuit.
 

Pièces jointes

  • tableau_CA(6).xlsm
    84.5 KB · Affichages: 35

NicolasE

XLDnaute Junior
Bonjour Job75

C'est super!!
Absolument c'est beaucoup plus simple et lisible avec cette configuration la!

Merci
J'ai maintenant compris le code complet.
DIctionary en effet est puissant...

J'ai noté une petite erreur dans votre code pour le client qui a le plus dépensé.
Le cas ou il y a le CA identique pour 2 client lors d'1 meme mois.

votre code est le suivant :

nom = Split(a(k), "#")(1)
maxi = b(k): t(i, j) = nom
ElseIf b(k) = maxi Then
t(i, j) = t(i, j) & "/" & nom

Or il faut mettre :

nom = Split(a(k), "#")(1)
maxi = b(k): t(i, j) = nom
ElseIf b(k) = maxi Then
t(i, j) = t(i, j) & "/" & Split(a(k), "#")(1)

C'est pour vous dire comme j'ai décortiqué votre code! :)

Merci encore

Je reviendrai potentiellement sur un nouveau sujet mais avant ca je vais tacher de trouver les solutions par moi meme ainsi que sur les differents sujets déja postés.

Bonne journée

NicolasE
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine