Arrêter l'exécution d'une macro le temps d'un traitement et la reprendre

nikkss

XLDnaute Nouveau
Re-bonjour à tous,

J'ai un soucis depuis très longtemps sur le chargement de tables ACCESS sur une feuille Excel. Voici mon code:
Code:
Public Sub ChargementFichierAccess(CheminAccess)
Dim sqlChaine As String, ChaineConn As String

'Suppression des données présentes sur la feuille de calcul
Cells.Select
Selection.Delete shift:=xlUp

'Import des données de la table cible sur la feuille de calcul
sqlChaine = "select * from RailEventMessage"
ChaineConn = "ODBC;DSN=MS Access Database;DBQ=" & CheminAccess
ActiveSheet.QueryTables.Add(Connection:=ChaineConn, Destination:=Range("$A$4"), Sql:=sqlChaine).Refresh

End Sub

Ce code fonctionne parfaitement et charge bien ma table sur la feuille.

Seulement, je charge cette table car je dois faire des traitements dessus, et c'est là où est le soucis. Tant que le code n'est pas arrêté (par la fin de la macro ou un point d'arrêt), les données de la table ne sont pas présentes sur la feuille (le message "chargement des données externes..." s'affiche en haut de la feuille). Mes traitements s'effectuent alors dans le vent (sans que ça plante d'ailleurs, ce qui est très bizarre). Puis qd la macro s'arrête, les données se chargent alors sur la feuille comme par magie.

Par contre si je fais du pas à pas, tout fonctionne. Les données se chargent dès que je passe la ligne:
Code:
ActiveSheet.QueryTables.Add(Connection:=ChaineConn, Destination:=Range("$A$4"), Sql:=sqlChaine).Refresh

Je contournai ce soucis en liant la fonction à un clic de bouton, mais comme je dois faire du traitement sur plusieurs tables à la suite, donc sans action utilisateur de possible avant la fin du traitement.

J'ai essayé le
Code:
Application.wait Time + TimeSerial(0, 0, 3)
mais sans succès..

Qqun aurait une idée?

Merci.
 

camarchepas

XLDnaute Barbatruc
Re : Arrêter l'exécution d'une macro le temps d'un traitement et la reprendre

Bonjour ,

As tu essayé avec le paramètre false de refresh

Code:
Sql:=sqlChaine).Refresh False

'Le paramètre False de la méthode Refresh est censé ne rendre la main à Excel (et'
'à la suite du code) que lorsque les données mises à jour ont été entièrement
'récupérées.
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 916
Membres
103 404
dernier inscrit
sultan87