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

desmonts

XLDnaute Junior
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.
 

Fichiers joints

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 Junior
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 Junior
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.
 

Fichiers joints

Dernière édition:

desmonts

XLDnaute Junior
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 Junior
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é
 

Fichiers joints

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.
 

desmonts

XLDnaute Junior
Super merci beaucoup Dranreb, cela fonctionne parfaitement, et effectivement je n'avais pas enregistrer l'autre fichier. C'est top encore merci.
cdt,
 

ChTi160

XLDnaute Barbatruc
Bonjour desmonts
Bonjour le Fil (Bernard ,Papou),le Forum
Bon bien que la solution donnée par Bernard (corresponde à l'attente) Lol
Le Résultat de mon propos #6
Le résultat s'affiche lors de l'activation de la Feuille "resultat".
jean marie
 

Fichiers joints

desmonts

XLDnaute Junior
Ah oui j avais pas vu simple efficace et en plus tu as expliqué ton code. Un grand merci Jean Marie également et en général à tous ceux du site qui nous dépanne régulièrement.
Cdt
 

Dranreb

XLDnaute Barbatruc
Il y a quand même aussi plein d'explications dans la feuille d'aide de GigIdx. Gigogne, TableUnique et l'objet SsGr avec ses propriétés Id et Co y sont expliqués très en détail.
 

desmonts

XLDnaute Junior
Oui c est vrai. Les 2 solutions me conviennent encore un grand merci. Je vais prendre un peu de tps pour essayer de comprendre un maximum.
 

Discussions similaires


Haut Bas