Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """ &
NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """ &
NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" <JulieHu@microsoft.com> a écrit dans le message de news:
u4fE0HbtHHA.1728@TK2MSFTNGP06.phx.gbl...
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """ &
NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """ &
NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """ &
NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" <JulieHu@microsoft.com> a écrit dans le message de news:
u4fE0HbtHHA.1728@TK2MSFTNGP06.phx.gbl...
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """ &
NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" <JulieHu@microsoft.com> a écrit dans le message de news:
u4fE0HbtHHA.1728@TK2MSFTNGP06.phx.gbl...
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" a écrit dans le message de news:Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" <julieh@discussions.microsoft.com> a écrit dans le message de news:
uBvAGfvtHHA.3544@TK2MSFTNGP03.phx.gbl...
Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" <JulieHu@microsoft.com> a écrit dans le message de news:
u4fE0HbtHHA.1728@TK2MSFTNGP06.phx.gbl...
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" a écrit dans le message de news:Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" a écrit dans le message de news:Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" <julieh@discussions.microsoft.com> a écrit dans le message de news:
uBvAGfvtHHA.3544@TK2MSFTNGP03.phx.gbl...
Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" <JulieHu@microsoft.com> a écrit dans le message de news:
u4fE0HbtHHA.1728@TK2MSFTNGP06.phx.gbl...
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" a écrit dans le message de news:Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" a écrit dans le message de news:Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" <julieh@discussions.microsoft.com> a écrit dans le message de news:
uBvAGfvtHHA.3544@TK2MSFTNGP03.phx.gbl...
Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
Julie
Bonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" <JulieHu@microsoft.com> a écrit dans le message de news:
u4fE0HbtHHA.1728@TK2MSFTNGP06.phx.gbl...
Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie
Bonjour,
Pour reproduire l'erreur j'ai du exécuter le code dans un nouveau classeur
sans l'avoir jamais enregistré auparavant. Dans ce cas le nom de classeur
passé à la procédure est incorrecte puisque tronqué d'une extension (.xls)
qui n'existe pas par la ligne suivante.
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
A la réflexion je me demande bien pourquoi je faisais ca...
Tu peux modifier cette ligne ainsi:
Application.Run ActiveWorkbook.Name & "!" & "Attendre", ThisWorkbook.Name
ou enregistrer ton classeur avant de lancer le test.
Et tant que je suis la, tu peux ajouter:
Application.VBE.MainWindow.Visible = False
au début de la procédure SupprimerMacros pour éviter le clignotement
intempestif de l'écran.
Cordialement,
Manu/
"JulieH" a écrit dans le message de news:Après essai, cela ne fonctionne pas complètement.
J'ai une erreur d'execution 9 "L'indice n'appartient pas à la sélection"
et la Macro bloque sur la ligne suivante :
With Workbooks(NomClasseur).VBProject 'supprime les macros
J'ai changé NomClasseur pour le nom du fichier en cours. Sans succès.
Merci pour vos idées.
JulieBonjour,
Les procédures suivantes doivent prendre place dans le même module (ici
nommé Module1) du classeur qui doit se saborder.
Bonne chance,
Manu/
Sub MacroSuicide()
Dim NomFichierModule As String
Application.ScreenUpdating = False
'Ajoute un classeur temporaire
Workbooks.Add
'Exporte ce module
With ThisWorkbook
NomFichierModule = .Path & "Module1.bas"
.VBProject.VBComponents("Module1").Export NomFichierModule
End With
'Copie ce module dans le classeur temporaire
ActiveWorkbook.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier module temporaire
Kill NomFichierModule
'Programme la procedure de suppression
Application.Run ActiveWorkbook.Name & "!" & "Attendre",
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'Termine le programme exécuté par ce classeur
End
End Sub
Sub Attendre(NomClasseur As String)
Application.OnTime Now + TimeValue("00:00:01"), "'SupprimerMacros """
& NomClasseur & """'"
End Sub
Sub SupprimerMacros(NomClasseur As String)
Dim VBC As Object
Application.ScreenUpdating = False
With Workbooks(NomClasseur).VBProject 'supprime les macros
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
Workbooks(NomClasseur).Save 'enregistre le classeur
ThisWorkbook.Close False 'ferme classeur temporaire
End Sub
"JulieH" a écrit dans le message de news:Bonjour,
Je cherche à effacer tout le code du fichier en cours. Pour cela,
j'utilise le code suivant :
Dim VBC As Object
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
ActiveWorkbook.Save
Tout fonctionne bien car après avoir lancer la macro, j'ai bien le
résultat escompté.
Cependant, lorsque je ferme le fichier, sans n'avoir fait aucune autre
manip, il me demande si je veux enregistrer :
- Si je réponds "oui", pas de problème le fichier n'a plus de code.
- Si je réponds "non", le code réapparaît. Il n'a pas pris en compte le
"save", ce qui semble assez logique étant donné que la macro elle-même
n'existe plus.
Ce que je souhaite : effacer le code, enregistrer immédiatement le
fichier pour que le code disparaissent définitivement, garder le fichier
ouvert (si possible).
Merci de vos idées.
Julie