VBA Excel et Access - Plantage mystère
Résolu/Fermé
Phoenellion
Messages postés
116
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
30 août 2012
-
Modifié par Phoenellion le 2/02/2012 à 06:22
Phoenellion Messages postés 116 Date d'inscription dimanche 14 septembre 2008 Statut Membre Dernière intervention 30 août 2012 - 8 févr. 2012 à 21:50
Phoenellion Messages postés 116 Date d'inscription dimanche 14 septembre 2008 Statut Membre Dernière intervention 30 août 2012 - 8 févr. 2012 à 21:50
A voir également:
- VBA Excel et Access - Plantage mystère
- Si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Mise en forme conditionnelle excel - Guide
2 réponses
Phoenellion
Messages postés
116
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
30 août 2012
33
3 févr. 2012 à 06:37
3 févr. 2012 à 06:37
Bonjour,
comment régler le problème d'après toi ? ajouter un wait ? Je sais que pour internet explorer (depuis excel) tu peux demander à la macro d'attendre la fin du chargement de la page
Il y a quelque chose de similaire pour Excel et Access ?
(pas trouvé pour l'instant)
@+
Phoe
comment régler le problème d'après toi ? ajouter un wait ? Je sais que pour internet explorer (depuis excel) tu peux demander à la macro d'attendre la fin du chargement de la page
Il y a quelque chose de similaire pour Excel et Access ?
(pas trouvé pour l'instant)
@+
Phoe
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
2 févr. 2012 à 09:01
2 févr. 2012 à 09:01
Bonjour,
Suivant tes explications et une BD assez importante, tes macros ne laissent pas le temps nécessaire pour terminer les requêtes.
A+
Suivant tes explications et une BD assez importante, tes macros ne laissent pas le temps nécessaire pour terminer les requêtes.
A+
3 févr. 2012 à 09:04
envoie plutôt ton code (entre balises <>: voir bouton en haut à droite du message)
Modifié par Phoenellion le 7/02/2012 à 01:13
étrangement, elle vient de fonctionner sans problème...
mais à toutes fins utiles, je péréfère que tu jettes un coup d'oeil, il y a surement des améliorations à apporter pour la rendre plus stable.
petite observations :
- la partie "restitution TabSortie" est un peu lente vu que je complète les cellules une à une, il n'y a pas un moyen plus rapide ?
- j'ai beau mettre un "xlApp.Quit", le processus excel ne se termine pas pour autant, je ne dois pas m'y prendre correctement...
Merci d'avance pour ton aide
Modifié par michel_m le 7/02/2012 à 09:18
1/ Tu écris
xlApp.DisplayAlerts = False mais tu ne le remets pas à false, donc Excel resta à DisplayAlert=false jusqu'à la fin de la session Office ==> risque probable de gros soucis
D'autre part, à quoi sert ce DisplayAlert ?
2/ restitution tabsortie
tu peux te dispenser de boucle
3/ tu n'as pas mis le blocage du défilement de l'écran
Application.screenupdating=false (tu n'as pas besoin de le remettre à true à la fin): gain de temps, confort de l'utilisateur
4/ pas indispensable mais...
plutôt que la série de If....Store, j'aurais écris
5/quant à xlapp.quit, essaies avec set xlapp=nothing (pas sûr de moi) mais peut-^tre mettre cette ligne après next compteur
ou alors mettre
Set xlApp = CreateObject("Excel.Application") dans la boucle
ce point n° 5 demande à faire des essais ( là aussi, pas sûr de moi)
6/ enfin, déclare tes variables, surtout que tu manipules des données volumineuses d'après tes dires
Modifié par Phoenellion le 7/02/2012 à 22:31
je vais aussi répondre point par point :
1/ en effet, ici inutile, en fait j'ai pris l'habitude de déclarer ce paramètre car j'en ai régulièrement besoin. mais comme tu le dis, je peux m'en passer, donc je vais le virer.
2/ J'avais essayé cells(2,1)=TabSortie mais en voyant ta proposition je comprends pourquoi ça ne marchait pas. En effet, la méthode est bien plus rapide, j'ai juste du modifier la boucle qui complète tabsortie car j'avais mal codé, j'écrivais dans les colonnes 1 et 2 de tabsortie alors qu'un variable tableau commence par 0... ah ces débutants !
En tout cas merci pour le tuyau !
3/ par défaut, le paramètre visible de l'application est false quand on la lance depuis un createobject, donc je pensais (peut être à tord) que je pouvais me dispenser du désactiver le screen updating.
Je vais corriger, ça ne coute rien !
4/ je prends !! j'ai ce gros if en début de chacune de mes macro et c'est ... indigeste à la longue.
5/ j'ai fais divers essai dans ce sens déjà, ça ne change rien hélas... au mieux le processus excel se termine quand je ferme access, ce que ne me va pas car cette macro est la 4ème sub du module mais pas la dernière donc access continue de tourner après celle-ci.
6/ tu l'as surement compris dans le 5, cette macro fait partie d'un module de plusieurs sub, et j'utilise toujours les mêmes variables, donc je les déclare en public et en option explicit.
Je modifie mon code comme il faut, je refais des tests et je te tiens au jus
merci encore
@+
Phoe
7 févr. 2012 à 23:04
alors c'est très bizzare : en retirant xlApp.Displayalerts = False j'ai eu tout d'un coup beaucoup d'erreurs de syntaxe détectées dans l'éditeur de macro car j'oubliais de mettre "xlApp." devant des instructions Excel.
J'ai donc corrigé toutes ces fautes et maintenant la macro s'exécute sans aucun problème.
En plus avec tes auters astuce, la rapidité d'exécution est redoutable ! j'ai même plus le temps d'aller fumer !!
alors dans quelle mesure l'instruction xlApp.Displayalerts = False pourtant donnée pour excel, avait un impacté sur Access et le déboggage, mystère absolu !