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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ?
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" <iguey26@yahoo.fr> a écrit dans le message de
news:ud9JRyonJHA.4964@TK2MSFTNGP05.phx.gbl...
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 ?
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 ?
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 ?
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:
ugTN0rqnJHA.5980@TK2MSFTNGP06.phx.gbl...
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" <iguey26@yahoo.fr> a écrit dans le message de
news:ud9JRyonJHA.4964@TK2MSFTNGP05.phx.gbl...
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 ?
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 ?