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

Suppression macro

13 réponses
Avatar
Manu
Bonjour,

Je souhaite en vba demander à excel que lorsque j'ouvre le fichier toto.xls,
qu'il supprime toutes les macros qui se trouve dans la feuil mimi, voir même
pourquoi pas supprimer toutes les macros du fichier toto.xls

Merci pour votre aide

Manu

3 réponses

1 2
Avatar
Manu
Bonsoir,

J'ai suivi ta procedure, mais ca bug sur Set VBComps =
Wk.VBProject.VBComponents

J'ai fait :
Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)

Dim Wk As Workbook
Set Wk = Workbooks("toto.xls")
SupprimeToutCodeEtFormulaire Wk

Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select

et dans un module standard :

Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = Wk.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

Je ne comprend rien.

Merci

Manu


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

Avec votre permission,

Pour supprimer le code d'UNE feuille :

Dim Wk as workbook
'le classeur doit être ouvert
'Indique le nom du classeur où est la feuille
'dont tu veux supprimer le code
Set Wk = Workbooks("NomDuClasseu.xls")

!NomFeuille = Nom de la propriété Name de
l'objet Worksheet visible dans l'éditeur de code
et non le nom de l'onglet de la feuille.

With Wk.VBProject.VBComponents("NomFeuille")CodeModule
.DeleteLines 1, .CountOfLines
End With

Si tu veux supprimer toutes les procédures des modules
feuilles, du ThisWorkbook, et supprimer tous les modules
standard, de classe et les formulaire :

dim Wk As Workbook
'Insère la référence du classeur où tu veux
'supprimer tout le code
Set Wk = Workbooks("NomDuClasseur.xls")
'Appelle la procédure quand tu es prêt de
cette manière c'est tout.
SupprimeToutCodeEtFormulaire Wk
'-------------------------------------------------
'Copie cette procédure dans un module standard.
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = Wk.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
'-------------------------------------------------





"Manu" a écrit dans le message de groupe de
discussion :
#
J'ai fais ceci, mais ca bug tjrs sur la ligne : With
Workbooks("toto.xls").VBProject.VBComponents.CodeModule

Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
With
Workbooks("toto.xls").VBProject.VBComponents.CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select


"Daniel.C" a écrit dans le message de news:

Avec cette syntaxe, la macro doit être dans le classeur qui contient
mimi.
Sinon remplace "thisworkbook" par workbooks("nomduclasseur")...
Daniel

ca bloque encore, j'ai fais ceci :


Application.DisplayAlerts = False
Workbooks.Open Filename:= _


"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
With ThisWorkbook.VBProject.VBComponents("mimi").CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select

et le debogueur tombe sur : With
ThisWorkbook.VBProject.VBComponents("mimi").CodeModule

"Daniel.C" a écrit dans le message de news:

Pour supprimer les macros de la Feuil2 :

With ThisWorkbook.VBProject.VBComponents("Feuil2").CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With

Daniel

Je ny arrive pas, en faît je fais une copie d'une feuille qui possede
des macros sur un autre fichier et je souhaite lui oter toute les
macros
voici ma macro

Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close

Windows("monfichier.xls").Activate
Range("a1").Select

Et je n'arrive pas à inserer le code ci-dessous dans ma macro, je
pense
qu'il faut l'inserer avant ActiveWorkbook.Save mais rien y fait

Dim VBComp, VBComps As Object
Set VBComps = ActiveWorkbook.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



Help SVP

Manu


"Manu" a écrit dans le message de news:
eIbU%
Merci Daniel ainsi qu'à Francois et Michdenis.

Manu

"Daniel.C" a écrit dans le message de
news:

La réponse était de François :

Bonjour,

Michdenis, à une demande similaire, m'avait indiqué le code suivant
pour tout supprimer :

MsgBox ("Pour que toutes les programmations devenues inutiles
soient définitivement supprimées," & Chr(13) & "il faudra ne pas
oublier d'enregistrer les modifications du classeur.")


Dim VBComp, VBComps As Object
Set VBComps = ActiveWorkbook.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

Mais ce code ne fonctionne que s'il n'y a pas de mot de passe pour
le
VBA ...

François



"Daniel.C" a écrit dans le message de
news:
Bonjour.
Reporte-toi à la réponse obtenue lors de ton premier post. Si elle
ne te convient pas, dis-le, mais s'il te plait, reste dans ton fil
initial.
Daniel

Bonjour,

Je souhaite en vba demander à excel que lorsque j'ouvre le
fichier
toto.xls,
qu'il supprime toutes les macros qui se trouve dans la feuil
mimi,
voir même
pourquoi pas supprimer toutes les macros du fichier toto.xls

Merci pour votre aide

Manu































Avatar
michdenis
Quelle est ta version d'excel ?

Dans l'interface de la feuille de calcul
barre des menus / outils / macros / sécurité / onglet éditeurs approuvés /
Est-ce que les 2 cases à cocher dans le bas de la fenêtre sont cochées ?

Est-ce que toutes tes autres macros s'exécute normalement ?





"Manu" a écrit dans le message de groupe de discussion :
#
Bonsoir,

J'ai suivi ta procedure, mais ca bug sur Set VBComps Wk.VBProject.VBComponents

J'ai fait :
Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)

Dim Wk As Workbook
Set Wk = Workbooks("toto.xls")
SupprimeToutCodeEtFormulaire Wk

Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select

et dans un module standard :

Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = Wk.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

Je ne comprend rien.

Merci

Manu


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

Avec votre permission,

Pour supprimer le code d'UNE feuille :

Dim Wk as workbook
'le classeur doit être ouvert
'Indique le nom du classeur où est la feuille
'dont tu veux supprimer le code
Set Wk = Workbooks("NomDuClasseu.xls")

!NomFeuille = Nom de la propriété Name de
l'objet Worksheet visible dans l'éditeur de code
et non le nom de l'onglet de la feuille.

With Wk.VBProject.VBComponents("NomFeuille")CodeModule
.DeleteLines 1, .CountOfLines
End With

Si tu veux supprimer toutes les procédures des modules
feuilles, du ThisWorkbook, et supprimer tous les modules
standard, de classe et les formulaire :

dim Wk As Workbook
'Insère la référence du classeur où tu veux
'supprimer tout le code
Set Wk = Workbooks("NomDuClasseur.xls")
'Appelle la procédure quand tu es prêt de
cette manière c'est tout.
SupprimeToutCodeEtFormulaire Wk
'-------------------------------------------------
'Copie cette procédure dans un module standard.
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = Wk.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
'-------------------------------------------------





"Manu" a écrit dans le message de groupe de
discussion :
#
J'ai fais ceci, mais ca bug tjrs sur la ligne : With
Workbooks("toto.xls").VBProject.VBComponents.CodeModule

Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
With
Workbooks("toto.xls").VBProject.VBComponents.CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select


"Daniel.C" a écrit dans le message de news:

Avec cette syntaxe, la macro doit être dans le classeur qui contient
mimi.
Sinon remplace "thisworkbook" par workbooks("nomduclasseur")...
Daniel

ca bloque encore, j'ai fais ceci :


Application.DisplayAlerts = False
Workbooks.Open Filename:= _


"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
With ThisWorkbook.VBProject.VBComponents("mimi").CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select

et le debogueur tombe sur : With
ThisWorkbook.VBProject.VBComponents("mimi").CodeModule

"Daniel.C" a écrit dans le message de news:

Pour supprimer les macros de la Feuil2 :

With ThisWorkbook.VBProject.VBComponents("Feuil2").CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With

Daniel

Je ny arrive pas, en faît je fais une copie d'une feuille qui possede
des macros sur un autre fichier et je souhaite lui oter toute les
macros
voici ma macro

Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close

Windows("monfichier.xls").Activate
Range("a1").Select

Et je n'arrive pas à inserer le code ci-dessous dans ma macro, je
pense
qu'il faut l'inserer avant ActiveWorkbook.Save mais rien y fait

Dim VBComp, VBComps As Object
Set VBComps = ActiveWorkbook.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



Help SVP

Manu


"Manu" a écrit dans le message de news:
eIbU%
Merci Daniel ainsi qu'à Francois et Michdenis.

Manu

"Daniel.C" a écrit dans le message de
news:

La réponse était de François :

Bonjour,

Michdenis, à une demande similaire, m'avait indiqué le code suivant
pour tout supprimer :

MsgBox ("Pour que toutes les programmations devenues inutiles
soient définitivement supprimées," & Chr(13) & "il faudra ne pas
oublier d'enregistrer les modifications du classeur.")


Dim VBComp, VBComps As Object
Set VBComps = ActiveWorkbook.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

Mais ce code ne fonctionne que s'il n'y a pas de mot de passe pour
le
VBA ...

François



"Daniel.C" a écrit dans le message de
news:
Bonjour.
Reporte-toi à la réponse obtenue lors de ton premier post. Si elle
ne te convient pas, dis-le, mais s'il te plait, reste dans ton fil
initial.
Daniel

Bonjour,

Je souhaite en vba demander à excel que lorsque j'ouvre le
fichier
toto.xls,
qu'il supprime toutes les macros qui se trouve dans la feuil
mimi,
voir même
pourquoi pas supprimer toutes les macros du fichier toto.xls

Merci pour votre aide

Manu































Avatar
Manu
Super et merci bcp, la 2eme case de barre des menus / outils / macros /
sécurité / onglet éditeurs approuvés / n'etait pas coché, désormais ca
fonctionne impec. J'aurais jamais pensé à ca.
Merci encore
Manu

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

Quelle est ta version d'excel ?

Dans l'interface de la feuille de calcul
barre des menus / outils / macros / sécurité / onglet éditeurs approuvés /
Est-ce que les 2 cases à cocher dans le bas de la fenêtre sont cochées ?

Est-ce que toutes tes autres macros s'exécute normalement ?





"Manu" a écrit dans le message de groupe de
discussion :
#
Bonsoir,

J'ai suivi ta procedure, mais ca bug sur Set VBComps > Wk.VBProject.VBComponents

J'ai fait :
Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)

Dim Wk As Workbook
Set Wk = Workbooks("toto.xls")
SupprimeToutCodeEtFormulaire Wk

Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select

et dans un module standard :

Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = Wk.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

Je ne comprend rien.

Merci

Manu


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

Avec votre permission,

Pour supprimer le code d'UNE feuille :

Dim Wk as workbook
'le classeur doit être ouvert
'Indique le nom du classeur où est la feuille
'dont tu veux supprimer le code
Set Wk = Workbooks("NomDuClasseu.xls")

!NomFeuille = Nom de la propriété Name de
l'objet Worksheet visible dans l'éditeur de code
et non le nom de l'onglet de la feuille.

With Wk.VBProject.VBComponents("NomFeuille")CodeModule
.DeleteLines 1, .CountOfLines
End With

Si tu veux supprimer toutes les procédures des modules
feuilles, du ThisWorkbook, et supprimer tous les modules
standard, de classe et les formulaire :

dim Wk As Workbook
'Insère la référence du classeur où tu veux
'supprimer tout le code
Set Wk = Workbooks("NomDuClasseur.xls")
'Appelle la procédure quand tu es prêt de
cette manière c'est tout.
SupprimeToutCodeEtFormulaire Wk
'-------------------------------------------------
'Copie cette procédure dans un module standard.
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = Wk.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
'-------------------------------------------------





"Manu" a écrit dans le message de groupe de
discussion :
#
J'ai fais ceci, mais ca bug tjrs sur la ligne : With
Workbooks("toto.xls").VBProject.VBComponents.CodeModule

Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
With
Workbooks("toto.xls").VBProject.VBComponents.CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select


"Daniel.C" a écrit dans le message de news:

Avec cette syntaxe, la macro doit être dans le classeur qui contient
mimi.
Sinon remplace "thisworkbook" par workbooks("nomduclasseur")...
Daniel

ca bloque encore, j'ai fais ceci :


Application.DisplayAlerts = False
Workbooks.Open Filename:= _


"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
With ThisWorkbook.VBProject.VBComponents("mimi").CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close
Windows("monfichier.xls").Activate
Range("a1").Select

et le debogueur tombe sur : With
ThisWorkbook.VBProject.VBComponents("mimi").CodeModule

"Daniel.C" a écrit dans le message de news:

Pour supprimer les macros de la Feuil2 :

With ThisWorkbook.VBProject.VBComponents("Feuil2").CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next i
End With

Daniel

Je ny arrive pas, en faît je fais une copie d'une feuille qui possede
des macros sur un autre fichier et je souhaite lui oter toute les
macros
voici ma macro

Application.DisplayAlerts = False
Workbooks.Open Filename:= _
"C:Documents and SettingsManuBureautoto.xls"
Sheets("mimi").Select
ActiveWindow.SelectedSheets.Delete
Windows("monfichier.xls").Activate
Sheets("mimi").Select
Sheets("mimi").Copy Before:=Workbooks("toto.xls" _
).Sheets(1)
Range("A1").Select
ActiveWorkbook.Save
ActiveWindow.Close

Windows("monfichier.xls").Activate
Range("a1").Select

Et je n'arrive pas à inserer le code ci-dessous dans ma macro, je
pense
qu'il faut l'inserer avant ActiveWorkbook.Save mais rien y fait

Dim VBComp, VBComps As Object
Set VBComps = ActiveWorkbook.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



Help SVP

Manu


"Manu" a écrit dans le message de news:
eIbU%
Merci Daniel ainsi qu'à Francois et Michdenis.

Manu

"Daniel.C" a écrit dans le message de
news:

La réponse était de François :

Bonjour,

Michdenis, à une demande similaire, m'avait indiqué le code suivant
pour tout supprimer :

MsgBox ("Pour que toutes les programmations devenues inutiles
soient définitivement supprimées," & Chr(13) & "il faudra ne pas
oublier d'enregistrer les modifications du classeur.")


Dim VBComp, VBComps As Object
Set VBComps = ActiveWorkbook.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

Mais ce code ne fonctionne que s'il n'y a pas de mot de passe pour
le
VBA ...

François



"Daniel.C" a écrit dans le message de
news:
Bonjour.
Reporte-toi à la réponse obtenue lors de ton premier post. Si
elle
ne te convient pas, dis-le, mais s'il te plait, reste dans ton
fil
initial.
Daniel

Bonjour,

Je souhaite en vba demander à excel que lorsque j'ouvre le
fichier
toto.xls,
qu'il supprime toutes les macros qui se trouve dans la feuil
mimi,
voir même
pourquoi pas supprimer toutes les macros du fichier toto.xls

Merci pour votre aide

Manu


































1 2