Recherchev 2 critères dont 1 approximatif (date <=)
titeufdu89 -
Bonjour;
Je recherche une solution efficace pour réaliser une recherchev à deux critères :
- 1er critère (exactitude) : code article (numérique)
- 2ème critère (approximatif) : date de commande (numérique au format aaaammjj)
Premier onglet "Réception" :
- date de livraison en colonne A
- code article en colonne C
Second onglet "Prix achat", filtré par code article puis par date d'application du plus récent au plus ancien.
- code article en colonne A
- date de livraison en colonne C
- prix d'achat en colonne D
Mon objectif : trouver le prix de chaque article en fonction de leur jour de livraison.
Exemple : Rechercher dans "prix d'achat" colonne "A" le code article "Réception" "C2" puis dans "prix d'achat" colonne "C" une date d'application inférieure ou égale à la date de livraison contenue dans "Réception" "A2" et renvoyer le prix d'achat contenu dans la colonne "D" dans "Réception" "I2"
J'ai réalisé la macro ci-dessous qui fonctionne parfaitement mais très longue à l'exécution. Environ 13min pour traiter 8'000 lignes et il s'agit que d'un test, les fichiers définitifs tourneront autour des 40'000 lignes.
'Ajoute prix cession unitaire For Lig = 2 To derLoc code = ShRec.Cells(Lig, RecColArt) * 1 Set foundcell = ShPx.Columns(PxColArt).Find(what:=code, lookat:=xlWhole) If Not foundcell Is Nothing Then o = foundcell.Row Set foundcell = Nothing If ShPx.Cells(o, PxColDat) > ShRec.Cells(Lig, RecColDatEd) Then Do Until ShPx.Cells(o, PxColDat) <= ShRec.Cells(Lig, RecColDatEd) And ShPx.Cells(o, PxColArt) = code o = o + 1 Loop ShRec.Cells(Lig, RecColPxUni) = ShPx.Cells(o, PxColPx) Else ShRec.Cells(Lig, RecColPxUni) = ShPx.Cells(o, PxColPx) End If End If Next Lig
Auriez vous une solution plus efficace à me proposer pour ce type de travaux?
Je vous remercie par avance pour votre aide.
Jc
- Recherchev 2 critères dont 1 approximatif (date <=)
- Supercopier 2 - Télécharger - Gestion de fichiers
- Word numéro de page 1/2 - Guide
- 2 ecran pc - Guide
- Airpods 3 date de sortie - Guide
- Jm date avis - Forum Consommation & Internet
3 réponses
Bonjour
déja
en début de macro
application.screenupdating=false (fonctoin volatile )
ensuite vu la taille de ton tableau, on a intér^t à passer par des variables-tableau
on devrait tomber sous une durée en 1/10 ou 1/100 de seconde
je regarde dans mon b....el un exemple avec ces variables.....donc patience !