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

effacer le code vba d'un classeur

5 réponses
Avatar
claude
bonjour à tous
depuis mon classeur, je fais une copie et j'enregistre
Est-il possible, par une macro, d'enlever tout le code vba existant dans
cette copie avant de l'enregistrer ?
merci par avance
claude

5 réponses

Avatar
isabelle
bonjour Claude,


Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object, VBComps As Object
Dim nomClasseur As String, Nom2 As String


nomClasseur InputBox("Nom du classeur dont on veut" _
& vbCrLf & "effacer toutes les macros et tous les formulaires
(UserForms)?)" _
& vbCrLf & "Format: monClasseur.xls" _
& vbCrLf & "Laisser en blanc pour quitter")


If nomClasseur "" Then Exit Sub


Do While Nom2 <> nomClasseur
Nom2 InputBox("Confirmez le nom du fichier svp" _
& vbCrLf & "Laissez en blanc pour quitter")
If nomClasseur "" Then Exit Sub
Loop


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
End Sub ' idée original de papou

isabelle




bonjour à tous
depuis mon classeur, je fais une copie et j'enregistre
Est-il possible, par une macro, d'enlever tout le code vba existant dans
cette copie avant de l'enregistrer ?
merci par avance
claude




Avatar
claude
bonjour Isabelle et merci
quand j'exécute la macro, sur la ligne
Set VBComps=Workbooks(nomClasseur).VBProject.VBComponents
j'obtiens une erreur 1004
"l'accès par programme au projet Visual Basic n'est pas fiable"
j'ai bien chargé la bibliothèque Microsoft Visual Basic for Applications
Extensibility 5.3
qu'en penses-tu ?
merci d'avance
claude




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

bonjour Claude,


Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object, VBComps As Object
Dim nomClasseur As String, Nom2 As String


nomClasseur InputBox("Nom du classeur dont on veut" _
& vbCrLf & "effacer toutes les macros et tous les formulaires
(UserForms)?)" _
& vbCrLf & "Format: monClasseur.xls" _
& vbCrLf & "Laisser en blanc pour quitter")


If nomClasseur "" Then Exit Sub


Do While Nom2 <> nomClasseur
Nom2 InputBox("Confirmez le nom du fichier svp" _
& vbCrLf & "Laissez en blanc pour quitter")
If nomClasseur "" Then Exit Sub
Loop


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
End Sub ' idée original de papou

isabelle




bonjour à tous
depuis mon classeur, je fais une copie et j'enregistre
Est-il possible, par une macro, d'enlever tout le code vba existant dans
cette copie avant de l'enregistrer ?
merci par avance
claude




Avatar
LSteph
Bonjour,

Dans excel, menu outils macro
dérouler le menu pour acceder à l'item
sécurité
(dans l'onglet niveau mettre plutôt moyen qu'élevé)
dans l'onglet Editeurs Approuvés en bas
Faire confiance au projet.(Cocher cette case)

Cordialement.

lSteph

bonjour Isabelle et merci
quand j'exécute la macro, sur la ligne
Set VBComps=Workbooks(nomClasseur).VBProject.VBComponents
j'obtiens une erreur 1004
"l'accès par programme au projet Visual Basic n'est pas fiable"
j'ai bien chargé la bibliothèque Microsoft Visual Basic for Applications
Extensibility 5.3
qu'en penses-tu ?
merci d'avance
claude




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

bonjour Claude,


Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object, VBComps As Object
Dim nomClasseur As String, Nom2 As String


nomClasseur InputBox("Nom du classeur dont on veut" _
& vbCrLf & "effacer toutes les macros et tous les formulaires
(UserForms)?)" _
& vbCrLf & "Format: monClasseur.xls" _
& vbCrLf & "Laisser en blanc pour quitter")


If nomClasseur "" Then Exit Sub


Do While Nom2 <> nomClasseur
Nom2 InputBox("Confirmez le nom du fichier svp" _
& vbCrLf & "Laissez en blanc pour quitter")
If nomClasseur "" Then Exit Sub
Loop


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
End Sub ' idée original de papou

isabelle




bonjour à tous
depuis mon classeur, je fais une copie et j'enregistre
Est-il possible, par une macro, d'enlever tout le code vba existant dans
cette copie avant de l'enregistrer ?
merci par avance
claude








Avatar
claude
bonjour lSteph
merci du tuyau
effectivement, plus de message d'erreurs : mais rien ne se produit: aucune
ligne détruite ni aucun module effacé
j'ai exécuté la macro plusieurs fois et ... rien
???
j'ai dû sauter quelque chose
;-(
claude


"LSteph" a écrit dans le message de news:
%23t%
Bonjour,

Dans excel, menu outils macro
dérouler le menu pour acceder à l'item
sécurité
(dans l'onglet niveau mettre plutôt moyen qu'élevé)
dans l'onglet Editeurs Approuvés en bas
Faire confiance au projet.(Cocher cette case)

Cordialement.

lSteph

bonjour Isabelle et merci
quand j'exécute la macro, sur la ligne
Set VBComps=Workbooks(nomClasseur).VBProject.VBComponents
j'obtiens une erreur 1004
"l'accès par programme au projet Visual Basic n'est pas fiable"
j'ai bien chargé la bibliothèque Microsoft Visual Basic for Applications
Extensibility 5.3
qu'en penses-tu ?
merci d'avance
claude




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

bonjour Claude,


Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object, VBComps As Object
Dim nomClasseur As String, Nom2 As String


nomClasseur InputBox("Nom du classeur dont on veut" _
& vbCrLf & "effacer toutes les macros et tous les formulaires
(UserForms)?)" _
& vbCrLf & "Format: monClasseur.xls" _
& vbCrLf & "Laisser en blanc pour quitter")


If nomClasseur "" Then Exit Sub


Do While Nom2 <> nomClasseur
Nom2 InputBox("Confirmez le nom du fichier svp" _
& vbCrLf & "Laissez en blanc pour quitter")
If nomClasseur "" Then Exit Sub
Loop


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
End Sub ' idée original de papou

isabelle




bonjour à tous
depuis mon classeur, je fais une copie et j'enregistre
Est-il possible, par une macro, d'enlever tout le code vba existant
dans cette copie avant de l'enregistrer ?
merci par avance
claude









Avatar
LSteph
Bonsoir,
Il suffit ensuite d'executer la macro donnée par Isabelle et
de fournir le nom de classeur.
Vérifie qu'il ne manque pas de "=" comme dans le premier et
que tu n'as pas de coupures de lignes (code en rouge).
Sinon voici:

http://cjoint.com/?fbvxzJ7hHr

Cordialement.

lSteph


Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object, VBComps As Object
Dim nomClasseur As String, Nom2 As String


nomClasseur = InputBox("Nom du classeur dont on veut" _
& vbCrLf & "effacer toutes les macros et tous les
formulaires(UserForms)?)" _
& vbCrLf & "Format: monClasseur.xls" _
& vbCrLf & "Laisser en blanc pour quitter")


If nomClasseur = "" Then Exit Sub


Do While Nom2 <> nomClasseur
Nom2 = InputBox("Confirmez le nom du fichier svp" _
& vbCrLf & "Laissez en blanc pour quitter")
If nomClasseur = "" Then Exit Sub
Loop


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
End Sub ' idée original de papou
'isabelle




bonjour lSteph
merci du tuyau
effectivement, plus de message d'erreurs : mais rien ne se produit: aucune
ligne détruite ni aucun module effacé
j'ai exécuté la macro plusieurs fois et ... rien
???
j'ai dû sauter quelque chose
;-(
claude


"LSteph" a écrit dans le message de news:
%23t%
Bonjour,

Dans excel, menu outils macro
dérouler le menu pour acceder à l'item
sécurité
(dans l'onglet niveau mettre plutôt moyen qu'élevé)
dans l'onglet Editeurs Approuvés en bas
Faire confiance au projet.(Cocher cette case)

Cordialement.

lSteph

bonjour Isabelle et merci
quand j'exécute la macro, sur la ligne
Set VBComps=Workbooks(nomClasseur).VBProject.VBComponents
j'obtiens une erreur 1004
"l'accès par programme au projet Visual Basic n'est pas fiable"
j'ai bien chargé la bibliothèque Microsoft Visual Basic for Applications
Extensibility 5.3
qu'en penses-tu ?
merci d'avance
claude




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

bonjour Claude,


Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object, VBComps As Object
Dim nomClasseur As String, Nom2 As String


nomClasseur InputBox("Nom du classeur dont on veut" _
& vbCrLf & "effacer toutes les macros et tous les formulaires
(UserForms)?)" _
& vbCrLf & "Format: monClasseur.xls" _
& vbCrLf & "Laisser en blanc pour quitter")


If nomClasseur "" Then Exit Sub


Do While Nom2 <> nomClasseur
Nom2 InputBox("Confirmez le nom du fichier svp" _
& vbCrLf & "Laissez en blanc pour quitter")
If nomClasseur "" Then Exit Sub
Loop


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
End Sub ' idée original de papou

isabelle




bonjour à tous
depuis mon classeur, je fais une copie et j'enregistre
Est-il possible, par une macro, d'enlever tout le code vba existant
dans cette copie avant de l'enregistrer ?
merci par avance
claude