Détecter la fin d'une importation ODBC

  • Initiateur de la discussion Initiateur de la discussion Eric
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Eric

Guest
Bonjour,

J'utilise une macro pour importer des données dans Excel via ODBC. Dans la même macro, juste après l'importation, je recalcule tout mon fichier.

Le problème est qu'Excel exécute la recalculation avant la fin complète de l'importation (le globe terrestre au fond de l'écran est encore en train de tourner alors que la recalculation est déjà terminée). Mon résultat final est donc faussé.

Si je fais une pause (wait) avant de recalculer, cela va planter si l'importation est un jour plus longue et rallonger l'opération si l'importation est plus courte.

J'ai donc besoin de détecter la fin complète de l'importation avant de passer à la suite de ma macro. Quelqu'un aurait une solution ?

Merci d'avance,
Eric
 
Salut Eric
bonjour fredl

peut être une solution en utilisant Application.calculation

tu mets en tête de macro le Calcul sur manuel et en fin de macro sur automatic

sub test()
Application.Calculation = xlCalculationManual
'----texte de la macro
On remet à automatique juste avant la fin de la macro :
Application.Calculation = xlCalculationAutomatic
end sub
On peut demander le calcul de tout le classeur :
Application.Calculate
Une seule Feuille :
ActiveSheet.Calculate
Ou même une plage de cellules :
Range ('F2:F8').Calculate
bonne fin de Journée

Message édité par: Chti160, à: 29/06/2006 14:30
 
Bonjour Fredl,
Bonjour ChTi160,
...et les autres,

Merci beaucoup pour vos lumineuses suggestions, je vais creuser vos pistes.

J'ai oublié de préciser que tout se déroule en mode de calculation manuel.

Quelques éléments supplémentaires :

Private Sub RefreshButton2_Click()
ActiveWorkbook.RefreshAll
ActiveWorkbook.XmlMaps('events_Map').DataBinding.Refresh
Call SetCalcZones
Application.Calculate
End Sub

Sub SetCalcZones()
Sheets('Schedule').Range('A1').Value = Format(Date - 18 + 23.9 / 24, 'm/d/yyyy')
Sheets('Schedule').Range('CALCZONE').FillRight
Sheets('Schedule (WE)').Range('A1').Value = Format(Date - 18 + 23.9 / 24, 'm/d/yyyy')
Sheets('Schedule (WE)').Range('CALCZONE2').FillRight
End Sub

Les 2 CALCZONES étant des Ranges de champs calculés que je remplis en fonction des données importées.

Merci encore et bonne soirée, la mienne sera sympa grâce à vous.
Eric
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
Réponses
0
Affichages
1 K
eeyglunent
E
Retour