XL 2016 rechercher des données en vba dans tableau avec des dates

desmonts

XLDnaute Occasionnel
Bonjour à toutes et tous,
J'aurai besoin d'un petit coup de main
je souhaiterai reconstituer un Chiffre d'affaire. J'ai dans mon onglet 1, des ref avec des prix et une période de validé. Dans l'onglet 2 les ref avec des date de réception.
En onglet 3 le chiffre d'affaire de chaque ref. Via une petite macro est il possible déterminer le chiffre d'affaire de chaque Ref en automatique avec les onglets 1 et 2 en tant que donné d'entrée.
Par avance merci de votre aide.
 

Pièces jointes

  • Essai determination du CA.xlsx
    14.8 KB · Affichages: 22

Paritec

XLDnaute Barbatruc
bonjour Desmonts le forum
En onglet 3 le chiffre d'affaire de chaque ref. Via une petite macro est il possible déterminer le chiffre d'affaire de chaque Ref en automatique avec les onglets 1 et 2 en tant que donné d'entrée.
Tu as joint un fichier xlsx donc pas de macro dedans, mais je ne comprend pas tu demandes
est il possible déterminer le chiffre d'affaire de chaque Ref en automatique avec les onglets 1 et 2 en tant que donné d'entrée.
tu veux quoi que les totaux par A B C soient fait dans les feuilles 1 et 2 c'est cela??
à te relire
a+
Papou :)
 

desmonts

XLDnaute Occasionnel
Merci de ton retour Paritec, je précise mon besoin, je cherche a avoir comme résultat l'onglet 3 c'est a dire le CA de chaque ref (prix * qtité) en fonction de la période car le prix des ref évoluent en fonction de la période de l'année. Là je l'ai fait manuellement mais je voudrais savoir si on peut l'automatiser via une macro ?
par avance merci
 

Paritec

XLDnaute Barbatruc
Re Bonjours desmonts le forum
je précise mon besoin, je cherche a avoir comme résultat l'onglet 3 c'est a dire le CA de chaque ref (prix * qtité) en fonction de la période
OK j'ai compris mais la période elle sera défini par quoi??? tu entres une date de départ et une date de fin??
dans tes feuille tu as 10 lignes !!!
alors je ne vois pas, explique clairement dans un pavé texte et fais moi un modèle dans la feuille 1 de ce que tu souhaites obtenir et je te ferai cela sans problèmes
a+
Papou :)
 

desmonts

XLDnaute Occasionnel
Merci de prendre du tps. le fichier est juste un exemple c'est pour cela qu'il y a que quelques lignes (je peux pas mettre le vrai). Ce que je souhaite obtenir est dans l'onglet résultat.
Ref A 4445 €
Ref B 1730€
Ref C 11580€

Dans l'onglet "date de validité de prix" tu as les Ref avec un prix et une date de début de validé colonne C et une date de fin de validé prix en colonne D ,
pour l'exemple la "ref c"

ref C
prix de 20€​
entre le 01/01/2018​
et le 01/10/2018​
ref C
prix de 19€​
entre le 02/10/2018​
et le 31/12/2018​
dans l'onglet "date de réception "
tu as toutes les ref réceptionnées avec leurs qtités en colonne B et leurs date de réceptions en colonne C.

Donc pour une Ref C dont on a réceptionnée 123 unités le 03/08 le prix sera de 20€ et pour les 456 unité réceptionnées le 04/03 le prix sera tjs de 20€, je doit obtenir en chiffre d'affaire pour cette ref C (123*20+456*20) soit 11580€. Si j'avais eu une réception de 12 pièces le 03/10 en plus le résultat aurait été (123*20+456*20+12*19) soit 11808€.

En espérant que cela soit plus clair. Merci de ton aide
 

ChTi160

XLDnaute Barbatruc
Bonjour desmonts
Bonjour le Fil(papou), le Forum
je pense qu il faut recupere les donnees en feuille 2.(tableau)
puis pour chaque ref(unique)
recupere chaque date de commande et faire une recherche dans le Tableau des donnees de la feuille1
pour faire le recap du prix (global)en fonction .
(pas dordi)
jean marie
 

Dranreb

XLDnaute Barbatruc
Bonjour.
J'ai écrit quelque chose :
VB:
Option Explicit

Private Sub Worksheet_Activate()
   Dim Ref As SsGr, Dat As SsGr, Détail, TRés(), L, PrixU As Currency
   ReDim TRés(1 To 5000, 1 To 2)
   For Each Ref In Gigogne(TableUnique(Feuil1.[A2], Feuil2.[A2]), 1, 3)
      L = L + 1: TRés(L, 1) = Ref.ID
      For Each Dat In Ref.Co
         For Each Détail In Dat.Co
            If Détail(0) = 0 Then PrixU = Détail(2) Else TRés(L, 2) = TRés(L, 2) + Détail(2) * PrixU
            Next Détail, Dat, Ref
   Me.[A7].Resize(5000, 2).Value = TRés
   End Sub
Mais pour la REF B je trouve 1930 au lieu de 1730. C'est moi qui ai raison ou c'est vous ?
 

Dranreb

XLDnaute Barbatruc
D'ailleurs j'avais même pas vu : pour la A je trouve 4045 au lieu de 4445.
Avec cette procédure : …
VB:
Option Explicit

Private Sub Worksheet_Activate()
   Dim Ref As SsGr, Dat As SsGr, Détail, TRés(), L, LDéb, PrixU As Currency, Montant As Currency, TotRéf As Currency
   ReDim TRés(1 To 5000, 1 To 5)
   L = -1
   For Each Ref In Gigogne(TableUnique(Feuil1.[A2], Feuil2.[A2]), 1, 3)
      L = L + 1: TRés(L + 1, 1) = Ref.Id: TotRéf = 0
      For Each Dat In Ref.Co
         For Each Détail In Dat.Co
            If Détail(0) = 0 Then
               PrixU = Détail(2)
            Else
               L = L + 1
               TRés(L, 2) = Dat.Id
               TRés(L, 3) = Détail(2)
               TRés(L, 4) = PrixU
               Montant = Détail(2) * PrixU
               TRés(L, 5) = Montant
               TotRéf = TotRéf + Montant
               End If
            Next Détail, Dat
         L = L + 1: TRés(L, 2) = "Total :": TRés(L, 5) = TotRéf
      Next Ref
   Me.[A7].Resize(5000, 5).Value = TRés
   End Sub
… je sors le détail et j'obtiens :
REFDateQtéPrixMontant
A02/02/20181005,00 €500,00 €
30/05/20187673,00 €2 301,00 €
01/11/2018222,00 €44,00 €
15/12/20182002,00 €400,00 €
04/04/2084002,00 €800,00 €
Total :4 045,00 €
B17/07/20182345,00 €1 170,00 €
14/10/2018205,00 €100,00 €
20/06/2081106,00 €660,00 €
Total :1 930,00 €
C04/03/201845620,00 €9 120,00 €
03/08/201812320,00 €2 460,00 €
Total :11 580,00 €
 

Dranreb

XLDnaute Barbatruc
Mais … L'année 208 c'est pas un peu vieux ?
Après avoir corrigé en 2018, et ajouté à la fin la date de début d'application du prix j'obtiens ça :
REFDateQtéPrixMontantDate prix
A02/02/20181005,00 €500,00 €01/01/2018
04/04/20184003,00 €1 200,00 €16/03/2018
30/05/20187673,00 €2 301,00 €16/03/2018
01/11/2018222,00 €44,00 €19/10/2018
15/12/20182002,00 €400,00 €19/10/2018
Total :4 445,00 €
B20/06/20181104,00 €440,00 €01/01/2018
17/07/20182345,00 €1 170,00 €21/06/2018
14/10/2018205,00 €100,00 €21/06/2018
Total :1 710,00 €
C04/03/201845620,00 €9 120,00 €01/01/2018
03/08/201812320,00 €2 460,00 €01/01/2018
Total :11 580,00 €
Soit encore 20 € de moins que les 1730 que vous aviez annoncé pour la REF "B"
 

Dranreb

XLDnaute Barbatruc
On retombe sur vos 1730 en prenant au lieu de 5, pour les 20 "B" du 14/10/2018 le prix 6 qui ne s'applique qu'en 2019.
Mais je viens de comprendre: Dans la ligne après la date2 au 15/09/2018 vous avez mis Date 1 à 16/02/2019 au lieu de 16/02/2018
Installez le complément à mettre en référence pour que les codes indiqués puissent tourner.
 

Pièces jointes

  • GigIdx.xlsm
    63.5 KB · Affichages: 8
  • Temp.xlsm
    24.5 KB · Affichages: 14
Dernière édition:

desmonts

XLDnaute Occasionnel
Merci Draneb,

Effectivement beaucoup d'erreur de dates désolé, c'est bien cela que je souhaite avoir. Parcontre je ne sais comment faire tourner ta macro ou tes macro, pourrais tu me guider stp car je suis néophyte et c'est un peu du chinois pour moi. Quand j'ouvre ton fichier temp que dois je faire après ?
Par avance merci beaucoup.
cordialement
 

Dranreb

XLDnaute Barbatruc
Le GigIdx venant tout juste d'être installé, ça devrait marcher. Sinon, coté VBA menu Outils, Références, cochez GigIdx. Si vous êtes sorti d'Excel après l'avoir installé alors d'abord coté Excel, menu Développeur, groupe Compléments, commande Compléments Excel, cochez "Fonction Gigogne" pour qu'il soit à nouveau ouvert. La macro se déclenche à l'activation de la feuille.
 
Dernière édition:

desmonts

XLDnaute Occasionnel
RE,
J'ai vérifier et côté VBA Gigdx est bien coché. Coté Excel j'ai pas trouvé la fonction Gigogne mais uniquement Analysis tool, complement solver etc.... Quand j'ouvre votre excel Temp et que je vais sur 1 autre onglet et que je retourne sur résultat cela bug (je vous ai mis en copie ce que cela donnait. Vraiment désolé
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    135.5 KB · Affichages: 10

Dranreb

XLDnaute Barbatruc
Il semblerait que vous avez oublié d'installer d'abord le complément GigIdx.xlam à partir du précurseur GigIdx.xlsm déposé au poste #10
D'ailleurs, on ne voit pas son projet GigIdx dans l'explorateur de projet montré par votre image.
Ou alors vous l'avez installé ailleurs que dans la bibliothèque de compléments Excel. Dans ce cas vous devez l'ouvrir manuellement depuis là où vous l'avez mis. Mais même une fois ouvert vous ne le verrez pas si c'est bien un .xlam.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarquez ce sont 3 modules de service dont 2 standard assez gros, et 1 de classe.
Je pourrais vous les installer dans le Temp.xlsm si vous préférez. Mais pour chaque application où vous voudriez les réutiliser vous devrez les y mettre aussi.
 

Discussions similaires

Réponses
4
Affichages
239
Réponses
2
Affichages
373