Ma macro s'arrète sans raisons / Sub pour fermer et écraser 1 fichier - VB/VBA/VBS - Programmation
Marsh Posté le 07-07-2011 à 09:59:10
info complémentaire... Je n'avais pas essayé jusqu'à présent mais ce code fonctionne très bien si exécuté en mode 'pas à pas' ....
Est-ce possible que ça aille trop vite ???
Marsh Posté le 06-07-2011 à 18:18:32
Bonjour à tous,
Pourriez-vous svp m'apporter un éclaircissement sur un problème que je rencontre ??? A savoir :
J'ai développé une procédure de création de sauvegardes temporaires (TEMP_nomfichier.xls) d'un fichier (nomfichier.xls) via la méthode 'savecopyas'.
Le but est de récupérer cette sauvegarde et d'écraser le fichier d'origine en cas de demande de l'utilisateur (En bref, un retour à l'état dans lequel était le fichier lors de la sauvegarde temporaire). + même principe pour sauvegarde BackUp...
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é :
___________________
BLOC 1 - 'définition des noms de fichiers
Dim oldFname As String
Dim newFname As String
oldFname = ActiveWorkbook.Name
newFname = "TEMP_" & ActiveWorkbook.Name
BLOC 2 - 'fermer un formulaire laissant 2 options de récupération: sauvegarde temporaire(utilisateur) ou BackUp(auto)
Call hideform3
BLOC 3 - 'j'appelle/ouvre mon fichier TEMP_nomfichier.xls
Workbooks.Open Filename:="P:\...\sauvegarde temp\" & newFname
BLOC 4 - 'je ferme mon fichier nomfichier.xls (sans quoi je ne pourrais pas l'écraser)
Workbooks(oldFname).Close savechanges:=False
BLOC 5 - '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 semble s'arrêter avant la fin 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é 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 et je manque de temps pour finir ce développement...
Aussi, il ne me reste plus que vous ...!!!
Merci d'avance pour votre aide.
N.B: Je précise les quelques points suivants qui pourrait peut-être avoir une importance...
- je travaille dans des répertoires d'un serveur (droit ok / vérifié) et Excel execution locale
- mon répertoire sauvegarde temp est caché
- le nom du fichier peut évoluer (d'où les activeworkbook.name)