Bonjour à tous,
Pourriez-vous svp m'apporter un éclaircissement sur un problème que je rencontre ??? (un peu novice ds le domaine) A savoir :
J'ai développé une procédure de création de sauvegardes temporaires(manuel) et de BackUp (auto) cad (TEMP_nomfichier.xls) ou (BU_nomfichier.xls) d'un fichier excel (nomfichier.xls) via la méthode 'savecopyas'. (rien de tordu en soit, enfin je crois...)
Le but est de récupérer une de ces sauvegardes et d'écraser le fichier d'origine en cas de demande de l'utilisateur, l'admin c mieux... (En bref, un retour à l'état dans lequel était le fichier lors de la sauvegarde TEMP ou BU).
Je pense avoir "toutes les billes" en main pour développer cette fonction mais je fais fasse à une situation que je ne comprends pas vraiment... Donc voici mon code + commentaires pour plus de clarté avant tout :
(exemple temp_nomfichier.xls ici)
___________________
BLOC 1 -BLOC 2 -
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'définition des noms de fichiers Dim oldFname As String Dim newFname As String oldFname = ActiveWorkbook.Name newFname = "TEMP_" & ActiveWorkbook.NameBLOC 3 -
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'fermer un formulaire laissant 2 options de récupération: sauvegarde temporaire(utilisateur) ou BackUp(auto) Call hideform3BLOC 4 -
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'j'appelle/ouvre mon fichier TEMP_nomfichier.xls Workbooks.Open Filename:="P:\...\sauvegarde temp\" & newFnameBLOC 5 -
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'je ferme mon fichier nomfichier.xls (sans quoi je ne pourrais pas l'écraser) Workbooks(oldFname).Close savechanges:=False___________________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 'j'écrase (en force) nomfichier.xls par TEMP_nomfichier.xls Application.DisplayAlerts = False Workbooks(newFname).SaveAs Filename:="P:\...\Base SCAME\" & oldFname Application.DisplayAlerts = True
Quand je cherche à exécuter cette macro, celle-ci s'arrête avant la fin des instructions sans aucun message d'erreur... Vraisemblablement, elle s'arrête après exécution du BLOC 4.
En supprimant le bloc 4 et en modifiant le bloc 5 comme suit :
Workbooks(newFname).SaveAs Filename:="P:\...\Base SCAME\" & "test" & oldFname
J'ai pu vérifier que sur le principe le code devrait fonctionner.
Ayant développé mon code directement dans un module de ma feuille xls au début, j'ai cru qu'elle s'arrêtait en raison de la fermeture du fichier qui contient la macro. J'ai donc tout migré (sauf 2/3 d'appels) vers des macros complémentaires .xla ce qui ne résout malheureusement pas le problème. (Bien que cela soit tout de même utile pour d'autres raisons)
J'ai également essayer de penser à d'autres astuces pour arriver au même résultat mais je sèche un peu sur ce coup là et je manque de temps pour finir ce développement... (Mission en perspective)
Aussi, il ne me reste plus que vous ...!!!
Sans quoi mon chef va me tomber dessus =>
Bref, dans tous les cas, un grand "Merci" pour vos réponses potentielles !!
N.B: Je précise les quelques points suivants qui me passe par la tête avant envoi et qui pourrait peut-être avoir une importance...???
- je travaille dans des répertoires d'un serveur (droit user ok / vérifié) et Excel exécution locale en multiposte
- mon répertoire 'sauvegarde temp' est caché (j'y crois pas là mais je précise tt de même...)
- le nom du fichier peut évoluer/varier (d'où les activeworkbook.name)
- des caractères 'spéciaux' peuvent être présent ds le nom du fichier
Ah... et je repenses à 2 questions à l'instant qui trotaient dans mon esprit ce soir :
- Se pourrait-il qu'après fermeture de nomfichier.xls il subsiste un processus bloquant la sauvegarde/l'écrasement de celui-ci par temp_nomfichier.xls ???
- Les variables définies dans une procédure peuvent-elles évoluer pour une raison indéterminée (à 1ere vue) et surtout de manière interne ou externe à la procédure en question ?
(En espérant ne pas avoir été trop long et surtout claire dans la description du problème et mes questions relatives)
Partager