|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 40 ![]() |
Bonjour à tous,
J'effectue un balayage d'un fichier EXCEL via le VBA d'ACCESS Lorsque il y a une correspondance entre deux valeurs j'attribue une valeur sur la même ligne. Ce balayage est rendu possible grâce au code ci-dessous. Le problème que je rencontre concerne l’exécution de mon code qui est beaucoup trop long Code :
Quelqu'un pourrait-il donc m'aider pour réduire ce temps ? Merci d'avance de votre aide |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Plusieurs remarques Déjà, nous ne savons pas quelle partie de ton code est à optimiser? Ensuite, tu demandes l'appel à plusieurs reprises d'une même requête qui a 2 filtres le nom de l'employé et la date. Peut être serait-il mieux de la faire qu'une fois et stocker son résultat dans un tableau ou une feuille que tu supprimes à la fin. Enfin pour améliorer ce code, je pense que cela rentre dans de l'optimisation de base de données donc à voir sur le forum de base de données pour optimiser tes requêtes mais sans le modele de données, je ne sais pas si c'est possible. Comme cela, je ne vois pas de grandes améliorations dessus, peut-être créer une vue pour réduire le nombre d'employé au départ si tu n'en utilises que certains. Je pense que chacune des requêtes est courte mais c'est la répétition de celles-ci qui augmente considérablement le temps de traitement. Peut-être le stockage de toutes les valeurs permettrait de modifier cette donnée, à tester.
__________________
Cordialement, Christophe Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche |
|
|
00
|
|
|
#3 | ||||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Bonjour,
Partie Excel : Tu peux peut-être utiliser une fonction de recherche au lieu du parcours cellules à cellules. Concernant Excel regarde la bible présente dans les tutos. http://bidou.developpez.com/article/VBA/ à partir de la page 180. Partie ACCESS : Apparement tu fais des opérations d'agrégation pour savoir si un tuple existe. Pourquoi ne pas faire un findfirst tout simplement ? Avec un recordset global tu devrais gagner du temps machine. Code :
Code :
Idem pour vide() ! Un FindFirst sur Employé dans le gRst t'indiquera si oui ou non il y en a un. Le Count() doit être réservé à renvoyer un nombre d'occurence pas à vérifier l'existence d'un tuple. Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
||||
|
00
|
Copyright © 2000-2012 - www.developpez.com