IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Archivage d'un fichier partagé: ouverture innopinée de l'archive et problème de procédure [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut Archivage d'un fichier partagé: ouverture innopinée de l'archive et problème de procédure
    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!

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Sans rentrer dans les détails, je dirais que vous fermez le workbook qui contient les macros ..... en ligne 17 de votre code. Donc rien ne se passe après
    Il vaudrait mieux je pense passer par la méthode ActiveWorkbook.SaveCopyAs

    PS: fichier partagé = au sens Excel du terme? Si oui, attention, c'est vraiment risqué ..... Tous les utilisateurs que je connais (dont moi) ont abandonné: trop contraignant et données souvent corrompues, beaucoup de limitations (tables, structures, ....)

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut
    Bonjour,

    Voilà qui m'éclaire sur l'arrêt de la procédure, merci pour la réponse!

    C'est bien un fichier partagé comme vous l'entendez, ce qui complique la tache. Je viens d'ailleurs de me rendre compte qu'il est impossible de supprimer une feuille d'un fichier excel partagé...
    Je vais donc revoir ma façon d'archiver les données totalement. Je vais me contenter de copier mes données dans un autre fichier, et de garder mon fichier maitre avec un nombre d'onglet fixes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Archivage de fichier partagé automatique VBA
    Par Barth1309 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/11/2017, 15h17
  2. Explorateur de fichier - partage de fichier
    Par Jean-Matt dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 07/11/2007, 23h23
  3. telecharger un fichier à l'ouverture d'une page
    Par Khrysby dans le forum Langage
    Réponses: 7
    Dernier message: 22/03/2006, 21h41
  4. Interdire la copie des fichiers partagés en réseau
    Par Essilife dans le forum Administration
    Réponses: 4
    Dernier message: 16/01/2006, 23h46
  5. Comment reconnaitre l'encodage d'un fichier à l'ouverture
    Par Kczav dans le forum Général Python
    Réponses: 3
    Dernier message: 03/01/2006, 08h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo