Enregistrer un fichier sans les macros d'origine ?

anthony.unac

XLDnaute Occasionnel
Bonsoir,

Partant d'un fichier A contenant la macro suivante :

Code:
Private Sub Workbook_Open()

Dim nomfichier

chemin = "C:\Documents and Settings\Administrateur\Bureau\"
nomfichier1 = "Colis Réceptionnés en " & Format(Feuil2.[A76], "mmm.yy") & ".xls"

Application.EnableEvents = False

With ActiveWorkbook
.SaveAs Filename:=chemin & nomfichier1
End With

Application.EnableEvents = True

End Sub

Comment faire pour creer un fichier "Colis Réceptionnés en ... .xls" ne contenant plus de macro ?

Cordialement
Anthony
 

anthony.unac

XLDnaute Occasionnel
Re : Enregistrer un fichier sans les macros d'origine ?

Re,

Une personne avait proposee ce code :

Code:
With ActiveWorkbook.VBProject
'cette partie du code est de Laurent Longre
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With

Est ce fiable et surtout ou dois je l inserer ce code ?

Cordialement
Anthony
 

job75

XLDnaute Barbatruc
Re : Enregistrer un fichier sans les macros d'origine ?

Bonsoir anthony.unac,

Edit 1 : ben je me suis trompé, je ne sais pas :eek:

Mais a priori il me semble que votre macro devra passer la main à un autre fichier qui lui exécutera le code de suppression du code VBA.

Edit 2 : cet autre fichier sera tout simplement le fichier A qu'il faut donc rouvrir après SaveAS. Et dans sa macro Workbook_Open on installe le code de suppression du VBA.

A+
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : Enregistrer un fichier sans les macros d'origine ?

Salut,à priori qqch comme
Code:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    .....
    ActiveWorkbook.SaveAs Filename:=Chemin & nomfichier1
    Suicide
End Sub

Private Sub Suicide()
    With ActiveWorkbook.VBProject
        For Each VBC In .VBComponents
            If VBC.Type = 100 Then
                With VBC.CodeModule
                    .DeleteLines 1, .CountOfLines
                    .CodePane.Window.Close
                End With
            Else: .VBComponents.Remove VBC
            End If
        Next VBC
    End With
End Sub
Cela fonctionne sans problèmes
 

anthony.unac

XLDnaute Occasionnel
Re : Enregistrer un fichier sans les macros d'origine ?

Bonsoir anthony.unac,

Edit 1 : ben je me suis trompé, je ne sais pas :eek:

Mais a priori il me semble que votre macro devra passer la main à un autre fichier qui lui exécutera le code de suppression du code VBA.

Edit 2 : cet autre fichier sera tout simplement le fichier A qu'il faut donc rouvrir après SaveAS. Et dans sa macro Workbook_Open on installe le code de suppression du VBA.

A+

j ai teste et apparemment ca bug a ce niveau :

For Each VBC In .VBComponents

"Reference incorrecte ou non qualifiee"
 

Paritec

XLDnaute Barbatruc
Re : Enregistrer un fichier sans les macros d'origine ?

Bonjour kiki Job Anthony,
je confirme cela marche très bien, une seule chose que je ne comprend pas c'est que lors de la première ouverture du fichier dénué de macro la fenêtre voulez vous activer les macros s'ouvre et après avoir sélectionner n'importe quelle cellule dans une feuille et fait enregistrer, si on ferme et qu'on ouvre a nouveau, là plus de fenêtre voulez vous activer le macros?
a+
bonne soirée
Papou :)
 

anthony.unac

XLDnaute Occasionnel
Re : Enregistrer un fichier sans les macros d'origine ?

Salut,à priori qqch comme
Code:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    .....
    ActiveWorkbook.SaveAs Filename:=Chemin & nomfichier1
    Suicide
End Sub

Private Sub Suicide()
    With ActiveWorkbook.VBProject
        For Each VBC In .VBComponents
            If VBC.Type = 100 Then
                With VBC.CodeModule
                    .DeleteLines 1, .CountOfLines
                    .CodePane.Window.Close
                End With
            Else: .VBComponents.Remove VBC
            End If
        Next VBC
    End With
End Sub
Cela fonctionne sans problèmes

Si si malheureusement, ca ne tourne pas rond chez moi avec le code suivant :

Code:
Option Explicit


Private Sub Workbook_BeforeClose(Cancel As Boolean, chemin As String)

Dim nomfichier

chemin = "C:\Documents and Settings\Administrateur\Bureau\"
nomfichier1 = "Colis Réceptionnés en " & Format(Feuil2.[A76], "mmm.yy") & ".xls"

'Application.EnableEvents = False

With ActiveWorkbook
.SaveAs Filename:=chemin & nomfichier1
End With

'Application.EnableEvents = True

Suicide

End Sub



Private Sub Suicide()
    With ActiveWorkbook.VBProject
        For Each VBC In .VBComponents
            If VBC.Type = 100 Then
                With VBC.CodeModule
                    .DeleteLines 1, .CountOfLines
                    .CodePane.Window.Close
                End With
            Else: .VBComponents.Remove VBC
            End If
        Next VBC
    End With
End Sub

"La declaration de la procedure ne correspond pas a la description de l evenement ou de la procedure du meme nom" :confused:
 

anthony.unac

XLDnaute Occasionnel
Re : Enregistrer un fichier sans les macros d'origine ?

Bonjour kiki Job Anthony,
je confirme cela marche très bien, une seule chose que je ne comprend pas c'est que lors de la première ouverture du fichier dénué de macro la fenêtre voulez vous activer les macros s'ouvre et après avoir sélectionner n'importe quelle cellule dans une feuille et fait enregistrer, si on ferme et qu'on ouvre a nouveau, là plus de fenêtre voulez vous activer le macros?
a+
bonne soirée
Papou :)

C est etonnant, j ai comme l impression que ce n est pas faisable du premier coup car il y a eu deja beaucoup de personnes qui ont cherche a faire ca en vain helas
 

job75

XLDnaute Barbatruc
Re : Enregistrer un fichier sans les macros d'origine ?

Re,

Je ne sais pas ce qu'il en est du code de suppression, mais a priori je modifierais votre code comme suit (je n'ai bien sûr fait aucun test) :

Code:
Private Sub Workbook_Open()
Dim fichierA$, chemin$, nomfichier$
fichierA = ThisWorkbook.Path & "\" & ThisWorkbook.Name
chemin = "C:\Documents and Settings\Administrateur\Bureau\"
nomfichier = "Colis Réceptionnés en " & Format(Feuil2.[A76], "mmm.yy") & ".xls"

Application.EnableEvents = False
On Error Resume Next
Workbooks(nomfichier).Activate
If Err = 0 Then
On Error GoTo 0
[COLOR="Red"]'ICI LE CODE DE SUPPRESSION DU VBA[/COLOR]
[COLOR="Red"]ActiveWorkbook.Close True[/COLOR] 'ou seulement : [COLOR="Red"]ActiveWorkbook.Save[/COLOR]
Application.EnableEvents = True
Exit Sub
End If

ThisWorkbook.SaveAs Filename:=chemin & nomfichier
Application.EnableEvents = True
Workbooks.Open fichierA
End Sub

A+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Enregistrer un fichier sans les macros d'origine ?

Bonsoir

Une autre méthode

Pour enregistrer une feuille sans macros* (ou un classeur ne contenant qu'une feuille)

* macros stockées dans des modules standards uniquement

Code:
Sub copie1feuilleNOMACROS()
Application.DisplayAlerts = False
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:="C:\Test\test2.xls", FileFormat:=xlNormal
ActiveWindow.Close
End Sub
 

anthony.unac

XLDnaute Occasionnel
Re : Enregistrer un fichier sans les macros d'origine ?

Bonsoir

Une autre méthode

Pour enregistrer une feuille sans macros* (ou un classeur ne contenant qu'une feuille)

* macros stockées dans des modules standards uniquement

Code:
Sub copie1feuilleNOMACROS()
Application.DisplayAlerts = False
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:="C:\Test\test2.xls", FileFormat:=xlNormal
ActiveWindow.Close
End Sub

Helas, mon fichier contient autant de feuilles qu il y a de jours dans le mois.
 

job75

XLDnaute Barbatruc
Re : Enregistrer un fichier sans les macros d'origine ?

Bonsoir Staple,

Comme ça fait plaisir de te revoir :):) :) tu as été absent si longtemps et vraiment tu nous manquais.

J'espère que tu va continuer, même si c'est un peu moins souvent qu'avant.

A+
 

Discussions similaires

Réponses
0
Affichages
719

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548