Les 2 macro ne lancent pas quant elles sont combinés

Bonjour à tous

j'ai toujours trouvé des aides ou solutions sur ce forum sans devoir créer de post. Mais aujourdhui, ne trouvant pas ce que je veux, je fais donc mon premier post

Pour faire simple. j'ai un gros fichier macro que j'ai monté pour mon service.

pour éviter que les gens ne touchent à mes codes je veux en limiter les accès, j'ai mis un code sur les vba (et non sur le fichier)

et j'ai donc mis en place un macro qui sert a faire un enregistrer sous...sans les macro

cela fonctionne ...mais pas quant il y a un code

j'ai donc mis en place une macro qui enleve le mot de passe pour ensuite lancer ma macro de l'enregistrer sous

Le soucis est que mes 2 macros (enlever le code et enregistrer sous) fonctionne quant je les lance mannuellement l'une apres l'autre mais quant je veux les combinés en 1 seule, cela ne fonctionne plus

ps: je ne peux pas mettre de fichiers joint du travail, je mets ca de mon tel dans quelques minutes

Voila le fichier avec les 2 macros

Mot de passe pour accéder aux macros

= monmotdepasse

Nonopince,

Pourquoi ne pas tout simplement utiliser devant ton "savecopyas" l'instruction:

Application.DisplayAlerts = False

Bien cordialement,

Gérard

Salut Gérard.

Merci pour ton retour.

J ai fait quelques test mais je n arrive a rien.

Quant tu dis de le mettre devant... Peux tu me dire a quel endroit tu pensais ?

Bonsoir Nonopince,

Je te propose le code suivant :

Sub SaveWithoutMacros()

'But : Pour créer une copie du classeur actif sans macros

'NOTER SVP : Vous devez aller dans Outils, Références et cocher

'Microsoft Visual Basic for Applications Extensibility library

Dim vFilename As Variant

Dim wbActiveBook As Workbook

Dim VBComp As VBIDE.VBComponent

Dim VBComps As VBIDE.VBComponents

On Error GoTo CodeError

'Message Box proposant un enregistrement sous

If MsgBox("Voulez-vous enregistrer sous ?" & vbCrLf & "Le fichier source sera fermé sans sauvegarde", vbOK) = vbOK Then

'Si oui, alors.....

'ouvre fenetre pour choisir chemin et nom pour la sauvegrade SANS LES MACRO

' en temps normal, les macro restent sur la copie

vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft Excel Workbooks,*.xlsx", _

Title:="Copie du classeur sans les macros")

If vFilename = False Then Exit Sub 'Utilisateur choisit d'annuler

'ActiveWorkbook.SaveCopyAs vFilename

'Set wbActiveBook = Workbooks.Open(vFilename)

'Set VBComps = wbActiveBook.VBProject.VBComponents

'For Each VBComp In VBComps

' Select Case VBComp.Type

' Case vbext_ct_StdModule, vbext_ct_MSForm, _

' vbext_ct_ClassModule

' VBComps.Remove VBComp

' Case Else

' With VBComp.CodeModule

' .DeleteLines 1, .CountOfLines

' End With

' End Select

'Next VBComp

'sauvegarde

'wbActiveBook.Save

'#############################################################

'GVS: Code proposé en remplacement de ce qui précède

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs vFilename, xlOpenXMLWorkbook

Application.DisplayAlerts = True

'#############################################################

Windows("enregistrez sous MAIS SANS LES MACROS.xlsm").Activate

ActiveWindow.Close SaveChanges:=False

Exit Sub

'sinon quitte la macro et ferme le fichier source

Else

Windows("enregistrez sous MAIS SANS LES MACROS.xlsm").Activate

ActiveWindow.Close SaveChanges:=False

Exit Sub

End If

CodeError:

Exit Sub

End Sub

N'oublie pas de changer l'extension en xlsx à la place de xls dans :

vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft Excel Workbooks,*.xlsx", _

Title:="Copie du classeur sans les macros")

Bonjour Gérard

Merci pour ton aide sur mon problème.

j'ai testé mais cela ne fonctionne pas.

il me fait l'enregistrement en xls mais prend en compte les macro du fichier source :(:(

Nonopince,

As-tu bien modifié l'extention xls en xlsx comme recommandé ?

vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft Excel Workbooks,*.xlsx", _ Title:="Copie du classeur sans les macros")

J'ai testé de mon côté et c'est OK.

Rechercher des sujets similaires à "macro lancent pas quant combines"