Macro pour remplacer macro

leviarango

XLDnaute Nouveau
Bonjour à tous.

J'ai developpé une macro (MAITRE) permettant de remplacer d'anciennes macros par de plus récentes. L'utilisateur sélectionne un fichier source (NEW) et les fichiers destinations (OLD) dans lesquelles il souhaite mettre à jour les macros.
Tout se passe bien jusqu'à la dernière étape de sauvegarde sous un nouveau nom. La macro (MAITRE) plante certainement car la macro NEW utilise l'option "Workbook_BeforeSave"
Si quelqu'un a une idée, je suis preneur.
merci par avance.

"File A" correspond à un exemple NEW et les fichier File B1, B2,B3 correspondent à des exemples de fichiers où les macros doivent être remplacées par celle de "File A" (j'espère être assez clair...)
 

Pièces jointes

  • forum.zip
    97.8 KB · Affichages: 37

leviarango

XLDnaute Nouveau
Bonjour,

Il me semble que le projetVBA de File A est protégé. Ne serait-ce pas la cause?

Sinon pour info, ça a planté chez moi.

Bonjour et merci de pendre le temps sur mon problème.
Effectivement les fichiers sont protégés en écriture ainsi que les macros (fichiers File A et B) mais la macro MAÎTRE s'occupe de tout.
À toute évidence vous rencontrez le même problème que moi lorsque la macro MAÎTRE sauvegarde le fichiers File B une fois modifiés... pas simple cette histoire :/
Merci encore
 

cathodique

XLDnaute Barbatruc
Es-tu sûr que la macro MAÎTRE s'occupe effectivement de la déprotection?

j'obtiens cette erreur
Capture.JPG


Revois ta constante Const MOT_PASSE As String, il lui manque la fin de chaîne.
 
Dernière édition:

leviarango

XLDnaute Nouveau
Application.VBE
Bonjour,
J'ai testé la commande pas à pas et la protection de la macro est bien supprimée permettant ainsi la mise à jour des macros dans les fichiers "File Bn".

Le problème est bien comme tu le dis un problème de protection de la feuille mais le soucis semble provenir du fait que dans les fichiers File B j'utilise la commande "Workbook_BeforeSave". J'ai bien essayé d'utiliser l'option Cancel=true de cette commande mais je dois mal m'y prendre car elle n'est pas prise en compte. Aurais-tu une astuce pour passer au travers de la commande "Workbook_BeforeSave"?
Merci encore de ton aide... j'ai hélas personne autour de moi qui pourrait m'aider, j'ai quelques fois l'impression d'être un extraterrestre parmi mes collègues... :)

A+
 

cathodique

XLDnaute Barbatruc
Bonjour,

Je t'avais donné la ligne qui causée problème.c'est au niveau de cette macro
VB:
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'unprotect the macro
    Dim vbProj As Object
    Set vbProj = WB.VBProject
    If vbProj.Protection <> 1 Then Exit Sub
    Set Application.VBE.ActiveVBProject = vbProj
  
    SendKeys Password & "{_}" & "{$}" & "~~"
    'Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute '*** ICI
End Sub
chez moi quand j'ai neutralisé la ligne de code, je n'ai plus eu l'erreur du post #4.

par contre j'ai eu 2 messages d'erreur relatifs aux mots de passe.

Capture1.JPG
Capture2.JPG


Pas compris cette histoire de mot de passe!
 

leviarango

XLDnaute Nouveau
Bonjour,

Lorsque tu neutralises la ligne mentionnée tu empêches Excel d'accepter le mot de passe pour ouvrir l'éditeur de macros pour ensuite les supprimer et les remplacer par de nouvelles macro. C'est donc tout à fait normale d'avoir le message d'erreur sur le mot de passe.

Je reste convaincu que la solution serait de contourner le "Workbook_BeforeSave" se trouvant dans les fichiers "File B" car lorsque je le supprime tout se passe bien. Mais là je ne sais pas comment faire... :(

Merci quand même de ton aide.
 

leviarango

XLDnaute Nouveau
Encore moi...
J'ai modifié la macro MAITRE par qu'elle affiche la variable "Cancel". Cette variable est définie comme TRUE dans la macro MAITRE et devrait le rester lorsque l'on passe par la commande évènementielle "Workbook_BeforeSave" ce qui n'est pas le cas (j'ai ajouté deux msgbox pour afficher la variable).
Donc s'il est possible de conserver toujours la valeur à TRUE entre les différents appels de l'évènement l'affaire serait réglée mais je bloque... si tu as une idée j'achète :)

Merci
 

Pièces jointes

  • forum2.zip
    94.5 KB · Affichages: 38

Discussions similaires

Réponses
26
Affichages
573

Statistiques des forums

Discussions
312 875
Messages
2 093 140
Membres
105 636
dernier inscrit
testNbis