OVH Cloud OVH Cloud

sauvegarder l'avancement d'une macro

2 réponses
Avatar
ig
Une macro s'exécute pendant des heures sur un classeur Excel. Une
maintenance est prévue sur le serveur. Comment sauvegarder l'état
d'avancement de la macro (avec toutes les données intermédiaires) avant de
fermer le classeur, pour que lorsqu'on rouvre le classeur, la macro continue
au point où elle s'était interrompue ?

2 réponses

Avatar
Philippe.R
Bonsoir à toi aussi,
Plusieurs heures d'exécution pour une macro, est ce bien raisonnable ?
Pour répondre plus précisément à la question : il faut prévoir des points
d'arrêt et les gérer dans la procédure.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"ig" a écrit dans le message de
news:
Une macro s'exécute pendant des heures sur un classeur Excel. Une
maintenance est prévue sur le serveur. Comment sauvegarder l'état
d'avancement de la macro (avec toutes les données intermédiaires) avant de
fermer le classeur, pour que lorsqu'on rouvre le classeur, la macro
continue au point où elle s'était interrompue ?



Avatar
M41
Bonjour

En général quand on travail sur un réseau, l'administrateur
informe des horaires de coupures pour maintenances.

Pour répondre aussi à Philippe.R
Cela peut être très résonnable !

Certaines macros peuvent effectivement tourner pendant
des heures comme celles qui scrutent une base de données
sur internet, copient une fiche dans une feuille et l'analysent
pour en tirer des informations précises à ranger dans un
tableau. Cela fonctionne parfois avec un numéroteur pour
calculer le nom du lien à chaque document précis....
Dans ce cas il suffit de sauvegarder sur une feuille la position
du numéroteur. On peut en effet imaginer que c'est un lien à
internet qui dépend du réseau mais qu'Excel est dans un PC
indépendant. Si Excel est aussi sur le réseau, cf aussi la solution
suivante.

Pour certains calculs intensifs de simulation, de calculs de
coordonnées 2D/3D, de "bootstrap", d'algorithmes génétiques
avec des populations importantes et beaucoup de critères...
je ne connais qu'une solution : utiliser au maximum dans les calculs
des variables sous forme variant et tableaux 2D liés à des
objets Range :

Dim X as variant, MonTableau2D as Range
X=MonTabeau2D

-la détection de cases vides correspond à un démarrage à zéro
-faire les calculs sur X(i,j) ;
attention s'il y a des chaînes de plus de1000 caractères
-écrire une procédure d'interruption liée à une touche
qui sauvegardera l'état par MonTableau2D=X puis une
sauvegarde du tabeur Excel avant arrêt sur un Stop,un End
ou un Exit Sub.
-on peut intégrer aussi un système qui sauve l'état du tableau
à intervalle de temps régulier avec sauvegarde automatique
du tableur en cas d'interruptions intempestives


Pour interrompre le programme incorporer dans l'algorithme
dans les parties les plus répétitives (arrêt avec Ctrl)

If TestMaTouche () Then
MonTableau2D=X
...sauvegarde...
Stop 'permet de poursuivre aussi sinon End
End If

*******************
Pour tester la méthode....
*******************

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As
Integer) As Integer
'
Public Function TestMaTouche(Optional ByVal T As Variant = 17) As Boolean
'************************************************************************
On Error Resume Next
TestMaTouche = GetAsyncKeyState(T) <> 0
End Function
Private Sub TestDuTestDeMaTouche27(): Debug.Print "Etat touche: ";
TestMaTouche(27): End Sub
Private Sub TestDuTestDeMaTouche17(): Debug.Print "Etat touche: ";
TestMaTouche(): End Sub
'17 = touche Ctrl

Cordialement

M41



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonsoir à toi aussi,
Plusieurs heures d'exécution pour une macro, est ce bien raisonnable ?
Pour répondre plus précisément à la question : il faut prévoir des points
d'arrêt et les gérer dans la procédure.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"ig" a écrit dans le message de
news:
Une macro s'exécute pendant des heures sur un classeur Excel. Une
maintenance est prévue sur le serveur. Comment sauvegarder l'état
d'avancement de la macro (avec toutes les données intermédiaires) avant
de fermer le classeur, pour que lorsqu'on rouvre le classeur, la macro
continue au point où elle s'était interrompue ?