Forums d'entraide informatique - Les forums de PCW

Version complète : Supprimer macro sous excel 2003
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Bonjour à toutes et tous !!!
Voilà mon problème :
J'ai sous excel 2000 crée une macro sur ma feuille tot.xls qui sauvegarde cette feuille mais en supprimant les macros qu'elle contient !!! Et ça marche !!!
Seulement je suis passé à excel 2003 et là ça va plus il me met erreur d'éxécution 1004 et j'ai
For Each VBComp In ActiveWorkbook.VBProject.VBComponents en jaune !
Je ne sais quoi faire !!
Si quelqu'un peut m'aider MERCI d'avance !!!
Confused Sad Confused
Salut et :bienvenue: à toi parmi nous Wink
Ta macro, tu l'as tapée c'est bien cela ?

Pourrai-tu nous donner le code de ta macro, qui entraîne cette erreur d'éxécutio, stp ?
Bonjour à tout le monde
Merci Troll de ton aide !!!
voila la macro qui fonctionne sous excel 2000 et pas sous 2003
(J'ouvre une feuille, je la remplie, je veux l'enregistrer mais sans les macros qui l'alourdissent...de 50ko à 220ko ça fait lourd quand tu en as 300 !!!)

'rajout de suppression de macro avant sauvegarde
Dim VBComp As Object
For Each VBComp In ActiveWorkbook.VBProject.VBComponents
Select Case VBComp.Type
Case 1 To 3
ActiveWorkbook.VBProject.VBComponents.Remove VBComp
Case Else
With VBComp.CodeModule
.DeleteLines 1, .CountofLines
End With
End Select
Next VBComp

Et là j'ai erreur 1004 et on bloque sur "For Each VBComp......
Je dois utiliser des termes que 2003 ne comprend pas !!!
J'espère être clair !!!
Il faudrait peut-être que j'y ailles --> :park:
Salut milo,

Alors après plusieurs recherches, j'ai remarquer que tu accédes à la macro en utilisant "For Each VBComp", donc l'objet "VBComp", cependant sur les scripts qui faisaient la même chose que le tiens sur le net, que j'ai trouvé, ils utilisaient l'objet VBComponent, lui aussi faisant partie de l'array ActiveWorkbook.VBProject

Voici donc ce que je te propose de changer pour ton script :



Dim VBComp[color=#ff0000]onent[/color] As Object
For Each [color=#ff0000]VBComponent[/color] In ActiveWorkbook.VBProject.VBComponents
Select Case VBComp.Type
Case 1 To 3
ActiveWorkbook.VBProject.VBComponents.Remove [color=#ff0000]VBComponent[/color]
Case Else
With [color=#ff0000]VBComponent[/color].CodeModule
.DeleteLines 1, .CountofLines
End With
End Select
Next [color=#ff0000]VBComponent[/color]



Et en passant, voici une autre macro qui doit faire la même chose que la tienne, je te laisse tester si elle fonctionne Wink :




Sub Macro1()
'
' Rajouter référence à "Microsoft visual basic for Application exten...
'
 Dim w As Workbook
 Dim d As VBComponent
 
 Set w = Workbooks.Open(Filename:="Classeur1.xls")
 For Each d In w.VBProject.VBComponents
   Debug.Print d.Name
   If d.Type = vbext_ct_StdModule Then  'vbext_ct_StdModule Then
        w.VBProject.VBComponents.Remove w.VBProject.VBComponents(d.Name)
   End If
 Next
 w.Close True
End Sub

voilà Wink

Bonjour à tous !!!
Désolé Troll de ne t'avoir répondu mais absent je n'ai essayé tes modifs que ces jours ci !!!
J'ai toujours le même problème !!
Je n'arrive pas à effacer ces ..... de macro, j'ai toujours les mêmes erreurs et blocage ...
J'ai bien respecté ce que tu me disais de faire mais NADA, çà ne veux fonctionner !!!
Merci quand même de tes idées !!!
:LOOL: :lol:
Salut milo,

Oups je viens de remarquer qu'il y avait du BBcode dans ce que je t'ai proposé, je t'ai proposé ceci :





         Dim VBComp[color=#ff0000]onent[/color] As Object
                For Each [color=#ff0000]VBComponent[/color] In ActiveWorkbook.VBProject.VBComponents
                Select Case VBComp.Type
                Case 1 To 3
                ActiveWorkbook.VBProject.VBComponents.Remove [color=#ff0000]VBComponent[/color]
                Case Else
                With [color=#ff0000]VBComponent[/color].CodeModule
                .DeleteLines 1, .CountofLines
                End With
                End Select
                Next [color=#ff0000]VBComponent[/color]




Cela aurait dû donner ceci :





         Dim VBComponent As Object
                For Each VBComponent In ActiveWorkbook.VBProject.VBComponents
                Select Case VBComp.Type
                Case 1 To 3
                ActiveWorkbook.VBProject.VBComponents.Remove VBComponent
                Case Else
                With VBComponent.CodeModule
                .DeleteLines 1, .CountofLines
                End With
                End Select
                Next VBComponent


As-tu testé l'autre code que je t'ai donné en te disant "voici une autre macro qui normalement devrait faire la même chose, je te laisse la tester" ?

Désolé Troll pour le retard !!!
Des pb divers (pc planté...plus pb de santé )la vie quoi !!!
Rien ne marche j'ai tout essayé je cherche des solutions mais NADA !! Je ne comprends pas pourquoi cela marchait bien avec excel 2000 et que celà ne fonctionne pas avec 2003 !!!
Si je trouve une solution (je ne désespère jamais) je la communiquerais au forum
Bonne"journée " à tout le monde !!! :lol: :lol:
Etonnant... je ne suis pas une lumière en Vbs... donc je vais pas pouvoir aller très loin mais tu l'insères comment ta macro ?
Bonjour à tous !!
Merci Troll de te préoccuper de mes problèmes !!!
Cette macro fait partie d'une macro que j'appele archive (je sauvegarde ma feuille en "effaçant" les macros de la feuille pour ne faire que 80ko au lieu de 125 ko).
En fait je prends une feuille que je remplie puis l'imprime et ensuite je l'archive cela me permet à n'importe quel moment de consulter une feuille xxxx8001 (xxxx = nom ; 8 année 2008 ; 001 étant le n° de cette feuille et ainsi de suite xxxx8002 ...).
J'ai 5 macros qui "pésent " dans le poids en KOctets !!! et c'est pour cela que je supprimais les macros (sous excel 2000)avant d' imprimer cette feuille et de la sauvegarder dans un répertoire "archive" .
Je ne sais à quel saint "me vouer" comme on dit !!! :lol: :lol:
J'espère quand même un jour réussir !!!
Tu sauvegardes tes fiches avec une macro ?

Ne serait-ce pas plus simple de sauvegarder manuellement ?


Car manuellement, je pense que Excel doit savoir faire enlever toutes les macros d'un fichier...
Pages : 1 2
URLs de référence