Solutionner le problème d'intégration d'une macro dans le ThisWorkBook

corvelc

XLDnaute Occasionnel
Bonjour,

J’essaye de mettre en place au travers de macros, une gestion des modifications faites dans un classeur au moment de la sortie d’Excel.

L’utilisateur a deux choix affichés par Msgbox :
- Soit pour une prise en compte par des administrateurs, sauvegarder automatiquement vers un répertoire spécifique le fichier modifié sous un nom précis avec la fermeture du classeur une fois cellui ci sauvegardé. (pour info ce répertoire est sur réseau)
- Soit sauvegarder son fichier où il veut mais l’informant qu'il n'y pas de prise en compte des administrateurs.

Tout ceci mis dans une seule macro « Mac_Test_depose » fonctionne bien.

Mais je souhaite activer ce processus lors de la sortie du classeur via le « ThisWorkbook » lors de l’option, « Fermer», «Enregistrer » ou « Enregistrer sous »
et là quand j'essaye de mettre en place en «Private Sub Workbook_BeforeSave» , cela se termine par un plantage d'Excel.


Lors de la mise en place dans « ThisWorkbook », Je pense avoir raté quelque chose pour sortir proprement, mais Quoi ?? Un peu d’aide à débugger serait bien venue.

Ci joint mon fichier de test

Merci d'avance pour l'aide apportée
CC
 
G

Guest

Guest
Re : Solutionner le problème d'intégration d'une macro dans le ThisWorkBook

Bonjour,

Dans l'évènement BeforeSave, ne rien autorisé car c'est les macros Mac_Depose qui enregistrent le fichier dans le dossier suivant le choix utilisateur
Code:
        If Response = vbYes Then
            SaveAsUI = False
            Cancel = True ' False = autorise la sauvegarde
            Call Mac_depose_OUI
        ' Si réponse Non pas de prise en compte de la fiche par CORAPI
        Else
            SaveAsUI = False
            Cancel = True
          Call Mac_depose_Non
        End If

Dans les macro Mac_Depose:

ne pas oublier de désactiver la gestion évènementielle, sinon tes macros rappeleront BeforeSave qui les rappellera qui rapelleront BeforeSave and so and so -> Plantage tournage en boucle
Code:
            Application.EnableEvents = False
            ThisWorkbook.SaveAs Filename:=DossierDest & NomFic
            Application.EnableEvents = True

A+
 

corvelc

XLDnaute Occasionnel
Re : Solutionner le problème d'intégration d'une macro dans le ThisWorkBook

d'abord, merci pour ton aide.

si j'ai bien compris, dans BeforeSave , je ne mets que la partie de ton code test de la réponse ? ensuite la gestion évènementielle sera appelée par les Call des macros Mac_Depose ?

CC
 
G

Guest

Guest
Re : Solutionner le problème d'intégration d'une macro dans le ThisWorkBook

bonjour Corlvec,

Excuse moi, je n'avais pas vu ton antepénultième message. Mais je vois que tu as compris le principe.

Un détail toutefois concernant:
Code:
Application.DisplayAlerts = False
  Application.EnableEvents = False

Il est préférable, pour des raisons de cohérence et pour retrouver tes petits, si ton projet s'agrandit, de mettre ses lignes avant l'appel de la macro.

VB:
    If Response = vbYes Then
        Application.DisplayAlerts = False
        Application.EnableEvents = False
        Call Mac_depose_OUI
        ' Réactiver les évènements et les messages d'alerte après la sauvegarde
        Application.EnableEvents = True
        Application.DisplayAlerts = True
        Cancel = True
        ThisWorkbook.Close
        Exit Sub
        ' Si réponse Non pas de prise en compte de la fiche par CORAPI
    Else
        Call Mac_depose_Non
    End If

A+
 

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia