OVH Cloud OVH Cloud

Enregistrer un fichier sans les macro

10 réponses
Avatar
élodie
Salut j'ai un fichier Lundi.xls qui contient des macros dont une permet de
faire une copie de sauvegarde dont voici le code source :

-----------------------------------------------------------------------------------------------
Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="nom_rep\Suivi du lundi " + Format(Date,
"YYYY") + "\Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Su
------------------------------------------------------------------------------------------------
Et j'aimerai que cette copie ne comprenne pas les macros de mon fichier ...

Comment faire s'il vous plaît aidez-moi !

10 réponses

Avatar
gilbert
Bonjour

De ce forum !!!

Ceci peut-il faire ce que tu désires ?

Sub SauveFeuilleSansCode()
Dim Rg As Range
Set Rg = ActiveSheet.UsedRange
With Application
.ScreenUpdating = False
Workbooks.Add (xlWBATWorksheet)
Range(Rg.Address) = Rg
ActiveWorkbook.Close True, CurDir & .PathSeparator & "MaCopy.xls"
.ScreenUpdating = True
End With
Set Rg = Nothing

MsgBox "Le fichier Ma Copy.xls vient d' être sauvarder sans code"
End Sub


salutations

Gilbert


"élodie" a écrit dans le message de
news:
Salut j'ai un fichier Lundi.xls qui contient des macros dont une permet de
faire une copie de sauvegarde dont voici le code source :

--------------------------------------------------------------------------
---------------------

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " +
Format(Date,

"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub
--------------------------------------------------------------------------
----------------------

Et j'aimerai que cette copie ne comprenne pas les macros de mon fichier
...


Comment faire s'il vous plaît aidez-moi !


Avatar
élodie
Salut gilbert

J'ai un doute ... J'ai plusieurs feuilles dans mon fichier Lundi.xls et
j'aimerais toutes les enregistrer... J'avoue que je vois pas trop comment
faire avec ton code même si j'en saisie à peu près le sens ... Faut dire
aussi que je débute dans le vba ...
Bref pourrais tu me dire comment faire pour enregistrer toutes mes pages
correctement ?

Merci d'avance pour ton aide précieuse !!
Avatar
Mavichavel
Bonsoir Elodie
Pour ma part, je fais au plus simple dans ce cas
précis. je fais un "copier coller" dans un
nouveau classeur et le tour est joué.
solution simple pour un débutant comme
moi...pourquoi faire compliqué???


Salut gilbert

J'ai un doute ... J'ai plusieurs feuilles dans mon
fichier Lundi.xls et j'aimerais toutes les
enregistrer... J'avoue que je vois pas trop comment
faire avec ton code même si j'en saisie à peu près
le sens ... Faut dire aussi que je débute dans le vba
... Bref pourrais tu me dire comment faire pour
enregistrer toutes mes pages correctement ?

Merci d'avance pour ton aide précieuse !!


--
merci d'éclairer ma lanterne.
(un jour, serai Calife à la Place du Calife...)

Avatar
isabelle
bonjour élodie,

ajoute y ces 3 lignes.

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets '<--------
.Copy '<--------
End With '<--------
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date,
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub

isabelle


Salut gilbert

J'ai un doute ... J'ai plusieurs feuilles dans mon fichier Lundi.xls et
j'aimerais toutes les enregistrer... J'avoue que je vois pas trop comment
faire avec ton code même si j'en saisie à peu près le sens ... Faut dire
aussi que je débute dans le vba ...
Bref pourrais tu me dire comment faire pour enregistrer toutes mes pages
correctement ?

Merci d'avance pour ton aide précieuse !!


Avatar
élodie
Salut Isabelle
Merci pour ton aide, par contre y'a juste un détail qui me chiffonne : mes
macros ont bien été non-enregistées mais mes procédures événementielles si.
Sais tu comment je peux faire en sorte de les enlever aussi ?
Encore merci !!!


bonjour élodie,

ajoute y ces 3 lignes.

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets '<--------
.Copy '<--------
End With '<--------
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date,
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub

isabelle


Salut gilbert

J'ai un doute ... J'ai plusieurs feuilles dans mon fichier Lundi.xls et
j'aimerais toutes les enregistrer... J'avoue que je vois pas trop comment
faire avec ton code même si j'en saisie à peu près le sens ... Faut dire
aussi que je débute dans le vba ...
Bref pourrais tu me dire comment faire pour enregistrer toutes mes pages
correctement ?

Merci d'avance pour ton aide précieuse !!





Avatar
isabelle
bonjour Élodie,

il y a quelque exemple de code ici,

http://www.excelabo.net/xl/macros.php#suppmacro

isabelle


Salut Isabelle
Merci pour ton aide, par contre y'a juste un détail qui me chiffonne : mes
macros ont bien été non-enregistées mais mes procédures événementielles si.
Sais tu comment je peux faire en sorte de les enlever aussi ?
Encore merci !!!


bonjour élodie,

ajoute y ces 3 lignes.

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets '<--------
.Copy '<--------
End With '<--------
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date,
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub

isabelle


Salut gilbert

J'ai un doute ... J'ai plusieurs feuilles dans mon fichier Lundi.xls et
j'aimerais toutes les enregistrer... J'avoue que je vois pas trop comment
faire avec ton code même si j'en saisie à peu près le sens ... Faut dire
aussi que je débute dans le vba ...
Bref pourrais tu me dire comment faire pour enregistrer toutes mes pages
correctement ?

Merci d'avance pour ton aide précieuse !!







Avatar
élodie
salut isabelle, j'ai regarde sur le lien que tu m'as conseille
(http://www.excelabo.net/xl/macros.php#suppmacro), et j'ai trouve le code
suivant qui pourrait m'etre utile :

Sub EffaceCodeFeuille(NomFeuille As String)
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _
(NomFeuille).CodeName).CodeModule
.DeleteLines 1,
.CountOfLines
.CodePane.Window.Close
End with
End Sub

seulement je sais pas trop comment l'integer au code que tu m'as conseille
et qui fonctionne pour mon cas sauf pour les evenements cad :

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets '<--------
.Copy '<--------
End With '<--------
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date,
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub

Pourrais-tu eclairer ma lanterne ?
Avatar
isabelle
bonjour Élodie,

dans la macro EffaceCodeFeuille(NomFeuille As String)
il y a l'argument NomFeuille As String
il faut ajouer à la macro principal une boucle sur la collection feuille du nouveau classeur et appeler cette macro

'IMPORTANT : tu dois charger la bibliothèque
'Microsoft Visual Basic for Applications Extensibility 5.3

Sub EffaceCodeFeuille(NomFeuille As String)
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _
(NomFeuille).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End Sub

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets
.Copy
End With
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date, _
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin

For Each feuille In Worksheets
EffaceCodeFeuille feuille.Name
Next

End Sub

isabelle



salut isabelle, j'ai regarde sur le lien que tu m'as conseille
(http://www.excelabo.net/xl/macros.php#suppmacro), et j'ai trouve le code
suivant qui pourrait m'etre utile :

Sub EffaceCodeFeuille(NomFeuille As String)
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _
(NomFeuille).CodeName).CodeModule
.DeleteLines 1,
.CountOfLines
.CodePane.Window.Close
End with
End Sub

seulement je sais pas trop comment l'integer au code que tu m'as conseille
et qui fonctionne pour mon cas sauf pour les evenements cad :

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets '<--------
.Copy '<--------
End With '<--------
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date,
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub

Pourrais-tu eclairer ma lanterne ?


Avatar
isabelle
pour charger la biblothèque, sur la fenêtre visual basic, sélectionne au menu, Outils, Référence
il faut cocher la case : Microsoft Visual Basic for Applications Extensibility 5.3

si cette bibliothèque n'est pas présente dans la liste, parcourir sur le répertoire
C:Program FilesFichiers communsMicrosoft SharedVBAVBA61036VBE6INTL.dll

isabelle


salut isabelle, j'ai regarde sur le lien que tu m'as conseille
(http://www.excelabo.net/xl/macros.php#suppmacro), et j'ai trouve le code
suivant qui pourrait m'etre utile :

Sub EffaceCodeFeuille(NomFeuille As String)
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _
(NomFeuille).CodeName).CodeModule
.DeleteLines 1,
.CountOfLines
.CodePane.Window.Close
End with
End Sub

seulement je sais pas trop comment l'integer au code que tu m'as conseille
et qui fonctionne pour mon cas sauf pour les evenements cad :

Sub CopieSemaine()
Dim chemin As String
chemin = ActiveWorkbook.FullName
Application.DisplayAlerts = False
With Sheets '<--------
.Copy '<--------
End With '<--------
ActiveWorkbook.SaveAs Filename:="nom_repSuivi du lundi " + Format(Date,
"YYYY") + "Lundi_" + Format(Date, "YYYY_MM_DD")
ActiveWorkbook.SaveAs Filename:=chemin
End Sub

Pourrais-tu eclairer ma lanterne ?


Avatar
YannX
"isabelle" a écrit dans le message de
news:
bonjour élodie,


Application.DisplayAlerts = False
Merci pour cette Methode ; la lecture du Forum

permet de retrouver indication d'outils qui seont utiles..
Y