Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enregistrement d'un ficher en otant les macro

7 réponses
Avatar
Hubert Dubois
Hello,
j'aimerais enregister via une macro mon fichier excel=20
mais sans les macros qu'il contient (donc juste la=20
feuille 1 par exemple). Mais je n'y arrive pas. Je ne=20
trouve pas la commande pour lui dire de ne pas enregister=20
les macros.

J'utilise =E7a actuellement:
"ActiveSheet.SaveAs 'C:\Projet.xls'"

Auriez-vous une solution =E0 mon probl=E8me ?

Merci d'avance ;)

7 réponses

Avatar
michdenis
Bonjour Hubert,

Il n'est pas possible d'enregistrer seulement une feuille comme étant un nouveau classeur.

La procédure va faire le travail que tu demandes.
Tout le code situé dans la feuille copiée sera supprimé.

'----------------------------
Sub EnregistrerFeuille1()

Dim Wk As Workbook, Nom As String
Nom = ThisWorkbook.Name
Application.ScreenUpdating = False

'Adapte le nom de la feuille à sauvegarder
With Worksheets("Feuil1")
.Copy
End With

'Supprime tout le code dans le
'code de la feuille 1
Set Wk = ActiveWorkbook
With Wk.VBProject.VBComponents _
(Wk.Worksheets(1).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With

'Sauvegarde de la feuille dans un
'nouveau classeur
Wk.SaveAs "C:Projet.xls"

'Pour fermer le Nouveau classeur au besoin
Wk.Close False

Workbooks(Nom).Activate
Set Wk = Nothing

End Sub
'----------------------------


Salutations!



"Hubert Dubois" a écrit dans le message de
news:7a8901c4315b$f5a19990$
Hello,
j'aimerais enregister via une macro mon fichier excel
mais sans les macros qu'il contient (donc juste la
feuille 1 par exemple). Mais je n'y arrive pas. Je ne
trouve pas la commande pour lui dire de ne pas enregister
les macros.

J'utilise ça actuellement:
"ActiveSheet.SaveAs 'C:Projet.xls'"

Auriez-vous une solution à mon problème ?

Merci d'avance ;)
Avatar
Hubert Dubois
Bonjour,
je vous remercie énormement pour votre aide !

Mais pourrais-je vous solliciter encore un petit moment ?

J'ai une erreur lors de l'éxecution de cette partie de
code "Set Wk = ActiveWorkbook
With Wk.VBProject.VBComponents _
(Wk.Worksheets(1).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With"

Petite précision, mon code se trouve dans "ThisWorkbook".

Merci!

Meilleures salutations.

Hubert Dubois
Avatar
michdenis
Bonjour Hubert,

Sous excel 2002, la procédure fonctionne très bien.


"Petite précision, mon code se trouve dans "ThisWorkbook"."

Écoute ta question demandait d'enregistrer la feuille choisie comme faisant d'un nouveau classeur et de faire
disparaître le code dans le module feuille choisie ... ce que fait la macro. Dans le nouveau Classeur qui est généré à
partir de la feuille choisie, il ne devrait pas y avoir l'ombre d'un début de code dans le ThisWorkbook puisque c'est un
nouveau classeur qui est créé.

Dans la procédure, tu n'as qu'à choisir la feuille désirée dans le code suivant :

'Adapte le nom de la feuille à sauvegarder
With Worksheets("Feuil1")
.Copy
End With



Salutations!





"Hubert Dubois" a écrit dans le message de
news:7ecc01c431a5$b05a76a0$
Bonjour,
je vous remercie énormement pour votre aide !

Mais pourrais-je vous solliciter encore un petit moment ?

J'ai une erreur lors de l'éxecution de cette partie de
code "Set Wk = ActiveWorkbook
With Wk.VBProject.VBComponents _
(Wk.Worksheets(1).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With"

Petite précision, mon code se trouve dans "ThisWorkbook".

Merci!

Meilleures salutations.

Hubert Dubois
Avatar
Hubert Dubois
Bonjour,

pourtant ça me renvoie une erreur de ce type: propriété ou
methode incorrect sur la ligne
" .CodeModule.DeleteLines 1, .CountOfLines"

Je comprend pas le problème là.
Avatar
michdenis
Bonjour Hubert,

Je travaille à partir d'excel 2002 ... Quelle ta version ?

Attention à la PRÉSENTATION du texte de la macro :


With Wk.VBProject.VBComponents _
(Wk.Worksheets(1).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With

ce qui précède n'est pas l'équivalent de ceci écrit sur la même ligne

" .CodeModule.DeleteLines 1, .CountOfLines"


Faut quand même prendre le temps de copier la procédure comme il se doit !


Salutations!



"Hubert Dubois" a écrit dans le message de
news:7f2301c431db$d94c4670$
Bonjour,

pourtant ça me renvoie une erreur de ce type: propriété ou
methode incorrect sur la ligne
" .CodeModule.DeleteLines 1, .CountOfLines"

Je comprend pas le problème là.
Avatar
Hubert Dubois
Hello,
j'ai bien excel 2002 et j'avais recopié avec les retours à
la ligne correct.

Je sais pas ce qui se passe. Enfin merci quand même et
bonne soirée.
Avatar
FxM
Bonsoir,

Dans le message n°6 du fil :
http://www.google.fr/groups?hl=fr&lr=&ie=UTF-8&oe=UTF-8&threadm=%23i2eV2LIEHA.364%40TK2MSFTNGP11.phx.gbl&rnum=3&prev=/groups%3Fas_q%3Dcodemodule%2520ThisWorkbook%26ie%3DUTF-8%26oe%3DUTF-8%26as_ugroup%3D*.fr.excel%26as_scoring%3Dd%26lr%3D%26num%3D100%26hl%3Dfr

Sub transfert_4()
'plein d'actions diverses et variées telles que sauvegarde du
'fichier original puis ...

Application.Calculation = xlCalculationAutomatic
On Error Resume Next
With ActiveWorkbook.VBProject. _
VBComponents("ThisWorkbook").CodeModule
.deleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End Sub

@+
FxM



Hubert Dubois wrote:

Hello,
j'ai bien excel 2002 et j'avais recopié avec les retours à
la ligne correct.

Je sais pas ce qui se passe. Enfin merci quand même et
bonne soirée.