OVH Cloud OVH Cloud

sauvegarde sans les macros

2 réponses
Avatar
philip
Bonjour,
Je souhaite programmer une sauvegarde d'un document Excel en supprimant dans
le même temps les macros. J'utilise our cela un code extrait de la
bibliothèque de programmes de Frédéric Sogonneau :
Sub Sauv()
Dim NomSource As String, CheminDest As String, NomDest As String
Dim VBC As Object

NomSource = ActiveWorkbook.Name
CheminDest = "E:\reporting entretien\essai\"
NomDest = InputBox("Entrez le nom du fichier de sauvegarde :", "Sauvegarde
des données")
NomDest = NomDest & ".xls"
Workbooks(NomSource).SaveAs CheminDest & NomDest
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.Deletelines 1, .CountOfLines
.CodePane.Windows.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
Application.Quit
SendKeys "%O"
End Sub

Lors de l'exécution, le programme coince sur la ligne
.Deletelines 1, .CountOfLines
et m'affiche le message suivant :
Erreur d'exécution '438' :
Propriété ou méthode non gérée par cet objet

Ai-je oublié quelque chose ?
Merci pour votre aide

2 réponses

Avatar
MichDenis
Bonjour Philip,

Tu appelles "effacerLecode" et il supprime tous les modules, formulaires et toutes les lignes de code dans les feuilles
modules d'un seul coup. !

'-------------------------------
Sub EffacerLeCode()

SupprimeToutCodeEtFormulaire ThisWorkbook.Name

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

Sub SupprimeToutCodeEtFormulaire(NomClasseur As String)

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = Workbooks(NomClasseur).VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

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


Salutations!







"philip" a écrit dans le message de news:

Bonjour,
Je souhaite programmer une sauvegarde d'un document Excel en supprimant dans
le même temps les macros. J'utilise our cela un code extrait de la
bibliothèque de programmes de Frédéric Sogonneau :
Sub Sauv()
Dim NomSource As String, CheminDest As String, NomDest As String
Dim VBC As Object

NomSource = ActiveWorkbook.Name
CheminDest = "E:reporting entretienessai"
NomDest = InputBox("Entrez le nom du fichier de sauvegarde :", "Sauvegarde
des données")
NomDest = NomDest & ".xls"
Workbooks(NomSource).SaveAs CheminDest & NomDest
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.Deletelines 1, .CountOfLines
.CodePane.Windows.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
Application.Quit
SendKeys "%O"
End Sub

Lors de l'exécution, le programme coince sur la ligne
.Deletelines 1, .CountOfLines
et m'affiche le message suivant :
Erreur d'exécution '438' :
Propriété ou méthode non gérée par cet objet

Ai-je oublié quelque chose ?
Merci pour votre aide
Avatar
papou
Bonjour
En théorie cela devrait fonctionner !
Est-ce que tu lances bien cette procédure à partir d'Excel et non pas à
partir de l'éditeur VB ?
Eventuellement ? met en commentaire la ligne
.CodePane.Windows.Close

Cordialement
Pascal

"philip" a écrit dans le message de
news:
Bonjour,
Je souhaite programmer une sauvegarde d'un document Excel en supprimant
dans

le même temps les macros. J'utilise our cela un code extrait de la
bibliothèque de programmes de Frédéric Sogonneau :
Sub Sauv()
Dim NomSource As String, CheminDest As String, NomDest As String
Dim VBC As Object

NomSource = ActiveWorkbook.Name
CheminDest = "E:reporting entretienessai"
NomDest = InputBox("Entrez le nom du fichier de sauvegarde :", "Sauvegarde
des données")
NomDest = NomDest & ".xls"
Workbooks(NomSource).SaveAs CheminDest & NomDest
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.Deletelines 1, .CountOfLines
.CodePane.Windows.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
Application.Quit
SendKeys "%O"
End Sub

Lors de l'exécution, le programme coince sur la ligne
.Deletelines 1, .CountOfLines
et m'affiche le message suivant :
Erreur d'exécution '438' :
Propriété ou méthode non gérée par cet objet

Ai-je oublié quelque chose ?
Merci pour votre aide