Bonjour tout le monde !
J'aimerais solliciter votre aide pour tenter d'optimiser mon code.
BESOIN :
Je dois a partir de plusieurs requetes SQL récupérer des données issu d'un fichier excel pour les retranscrire dans un autre fichier excel... Données brutes > Données mises en formes
EXISTANT:
J'ai un fichier excel avec 30 colonnes et un maximum de 400 lignes en gros sur une année.
J'effectue des requetes SQL pour récupérer des informations sur ces 400 lignes (compter le nombre d’occurrence basées sur certains critères, etc ...
Ex. Sur ces 400 lignes j'ai pour le mois de janvier 5 ventes de l'article A, 3 de l'article B ... en février 2 vente de l'article A, 0 de l'article B et 1 de l'article C ... etc
Je compte donc le nombre de ventes de l'article A avec comme critère "JANVIER", puis "FEVRIER" etc ... et ces 5 lignes je les regroupes en une seule pour obtenir le tableau suivant :
1 2 3 4 5
| MOIS | ARTICLE | QTE
JANVIER | ARTICLE A | QTE
JANVIER | ARTICLE B | QTE
FEVRIER | ARTICLE A | QTE
FEVRIER | ARTICLE C | QTE |
Seulement voilà ... quand je fais ça je boucle sur mes réulstats SQL
1 2 3 4 5 6 7 8 9
| sql = "SELECT * FROM [TEST$] WHERE MOIS = 1"
Set rs = cn.Execute(sql)
i = 2
Do
Sheets("TEST").Range("A" & i).Value = rs(0)
[...]
rs.Movenext
Loop Until rs.EOF
[...] |
Et le fait de mettre les données en retour dans les cellules cela prend un temps inconsidérable.
HELP:
J'ai certainement des lacunes en VBA du coup je vous solicite pour connaitre finalement une méthode rapide et fiable pour effectuer ce type d'opération.
J'avais opter pour une solution alternative sans SQL ... avec des =SOMMEPROD() ... etc mais pareil je me retrouvais avec des formules partout qui alourdissait considérablement le fichier et son traitement !
Comme certain produit ne sont pas toujours vendu le mois donnée ... j'étais partit sur :
Lister tous les articles en ventes par mois
1 2 3 4 5 6 7 8 9 10 11
| JANVIER | ARTICLE A
JANVIER | ARTICLE B
JANVIER | ARTICLE C
JANVIER | ARTICLE D
FEVRIER | ARTICLE A
FEVRIER | ARTICLE B
FEVRIER | ARTICLE C
FEVRIER | ARTICLE D
MARS | ARTICLE A
MARS | ARTICLE B
... | ... |
Ajouter sur chaque ligne les formules excel SOMMEPROD etc ... et supprimer ensuite les ligne donc les ventes sont = 0 pour n'avoir que les articles vendu ! ...
C'est lourd et très complexe à gérer ... je suis donc partit sur du SQL
Merci pour votre aide sur ce sujet épineux !
Excellente journée
Partager