1 visiteur(s) en ligne
Date actuelle : 30-08-2025, 13:08 PM Bienvenue, Visiteur ! ( Identification S'enregistrer )







 
Supprimer macro sous excel 2003
 
Note de cette discussion :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Auteur Message
milo18 Hors ligne
Newbie
*

Messages : 8
Inscription : Feb 2008
Réputation : 0
Message : #1
Supprimer macro sous excel 2003
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

avant de juger les autres regardes-toi !!!
20-02-2008 16:19 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #2
 
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 ?

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
20-02-2008 22:24 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
milo18 Hors ligne
Newbie
*

Messages : 8
Inscription : Feb 2008
Réputation : 0
Message : #3
 
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:

avant de juger les autres regardes-toi !!!
21-02-2008 17:47 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #4
 
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


Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
22-02-2008 07:20 AM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
milo18 Hors ligne
Newbie
*

Messages : 8
Inscription : Feb 2008
Réputation : 0
Message : #5
 
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:

avant de juger les autres regardes-toi !!!
05-03-2008 18:43 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #6
 
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" ?


Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
05-03-2008 19:57 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
milo18 Hors ligne
Newbie
*

Messages : 8
Inscription : Feb 2008
Réputation : 0
Message : #7