Bonjour,
Je travaille actuellement au développement d'un fichier partagé sur un réseaux d'entreprise.
En résumé, ce fichier va contenir des informations saisies sur divers postes sur la feuille 1. Il se sauvegarde automatiquement périodiquement et les données modifiées sont surlignées périodiquement également. Les deux procédures se lancent toutes les x minutes, et sont lancées une première fois dans une procédure Workbook_Open de ThisWorkbook.
Lorsque la feuille (feuille 1) de saisie des données est pleines, un des utilisateurs peut cliquer sur un bouton archiver: la feuille est archivée dans une nouvelle feuille du classeur.
Lorsque le nombre de feuille dans le classeur atteint un certain seuil, j'aimerais que le fichier entier soit archivé et qu'on reparte sur un fichier de saisie vierge.
J'ai déjà écrit les procédures décrivant tous ces aspects mais je n'arrive pas à rendre fonctionnelle l'étape d'archive du fichier.
Le bout de la procédure d'archive sur lequel mon programme bloque est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 'archive de la feuille de travail et test sur le nb de feuilles. Puis on réalise les instructions suivantes: Arret 'je stop mes procédure périodiques pendant l'archivage (Arret et ArretSave stop les procédure Surligne et AutoSave) ArretSave Set wkA= ThisWorkbook wkA.save fileSaveName = Application.GetSAveASFilename If fileSaveName <> False Then MsgBox "Enregistré sous " & fileSaveName wkA.SaveAs (fileSaveName & "xls") Set wkB = ActiveWorkbook Application.EnableEvents = False 'tentative de bloquer la procédure Worbook_open() sur le wkB, qui ne fonctionne pas Workbooks.Open currentworkbookpath Application.EnableEvents = true wkB.Close 'rien ne se passe après cette étape delsheet 'procédure qui devrait supprimer les feuilles en trop: fonctionne si appelée en dehors de cette boucle. Là, rien. MsgBox "un message pour prévenir de relancer excel manuellement" 'de la même manière, ce message ne s'affiche pas... Else MsgBox "Nom de fichier mal saisi, recommencer" End If Surligne 'je relance mes procédures automatiques périodiques Autosave
La situation est la suivante:
-L'archivage s'effectue correctement: le nouveau fichier est créé, nommé et enregistré correctement. Tout va bien jusqu'à la ligne où celui-ci est fermé (ligne 16).
-A partir de cette ligne, la procédure semble s'interrompre: l'appel à "delsheet" n'aboutit pas, la msgbox n'apparait pas. En faisant un déboguage pas à pas, après le wkB.close, ma fenêtre (de deboguage) affiche la dernière feuille créée (qui est vide de tout code) et rien de plus, plutot que de continuer les instructions.
-Autre soucis: Mon fichier archivé vient se rouvrir quelques secondes après l'archivage: il demande donc l'autorisation d'activer les macros et reste ouvert. Si je le ferme, il revient de la même façon quelques temps plus tard. Seul moyen d'arreter cela: fermer excel totalement.
Je ne comprends pas pourquoi l'archive s'ouvre toute seule: un test est fait pour ne lancer mes procédures périodiques que si le workbook correspond au fichier maitre. Il n'y a donc rien qui fasse appel périodiquement au workbook archivé...
Voilà pour les explications, désolé si certains points ne sont pas clairs, n'hésitez pas à poser des questions.
J'aimerais résoudre en priorité l'arret dans mon instruction, puisque le problème de ré-ouverture auto peut-être reglé manuellement.
Merci pour votre aide!
Partager