macro pour sélectionner une macro à effacer

olivierd

XLDnaute Junior
bonjour le forum,

j'utilise le code ci-dessous pour supprimer l'ensemble des macros contenues dans un classeur. ( macro issue de ce forum;) )

=>Mais est-il possible de déterminer le nom d'une macro spécifique contenue dans le classeur à supprimer au lieu de tout supprimer ?

Code:
Sub kill_toutes_les_macros()
   ' Kill=>détruit l'ensemble des modules de macros
Dim VBC As Object, Wbk As Workbook

Set Wbk = ActiveWorkbook
With Wbk.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
End Sub

merci pour vos conseils
cordialement
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Olivierd,

Frédéric Sigonneau t'offre la réponse à ta demande :
'Auteur : Frédéric Sigonneau
Sub SupprimeProcedure()
   DelProc ThisWorkbook, 'ThisWorkbook', 'Workbook_Open'
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
   With Wbk.VBProject.VBComponents(CodeMod).CodeModule
      liDeb = .ProcStartLine(NomProc, 0)
      NbLi = .ProcCountLines(NomProc, 0)
      .DeleteLines liDeb, NbLi
   End With
End Sub
Cordialement.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Didier, Olivierd, le Forum

Et sinon en restant sur XLD, non sans dire que Frédérique est un Grand Maître, digne successeur de son copain Laurent.

Mais donc chez nous sur le Forum XLD 1st Géneration :

=> >>> DATABASE XLD <<< RECENCEMENT FIL >> 21649 'VBA Effacement/Ecriture Macro'

Je me suis efforcé de regrouper un paquet de méthodes de suppressions de code, ou d'écritures... Si ça peut servir...

Bon App
@+Thierry

Message édité par: _Thierry, à: 29/03/2005 13:10
 

olivierd

XLDnaute Junior
bonjour,
C'est dingue...
j'utilise une macro qui enregistre sous puis une suppression de macro sélective ( auto_open ), qui marche parfaitement
Et bien que le nouveau fichier ne comporte plus l'auto_open, il se lance quand même ??!!
J'ai bien tout vérifié, j'ai lancé le nouveau fichier à partir d'un autre poste, l'autoi-open se lance alors que le code VBA n'en comporte pas(plus)
C'est comme si le nouveau fichier excel avait gardé en mémoire cache l'auto_open supprimée.

Par contre si ma macro de suppression sélective est sur un module différent du module de la macro à supprimmer, il semble que le problème ne survienne plus.

A votre avis, est-ce grave docteur ?
Code:
(...)
 ActiveWorkbook.SaveAs Filename:= _
        'ma_feuille.xls', FileFormat:=xlNormal, Password:='mon_code', WriteResPassword:='', ReadOnlyRecommended:= _False, CreateBackup:=False

 rep = MsgBox(' suppression de la macro d'ouverture ?', vbYesNo, ';-D')
If rep = 6 Then Application.Run ''Delete_macro_selection''
End Sub

 Sub Delete_macro_selection()
 Dim WB As Workbook
 Dim Code As Object
 Dim NomProc As String, NomModule As String
 Dim DebCode As Integer, LongCode As Integer, VBext_Pk_Proc As Long
 On Error GoTo FirstError
 Set WB = Workbooks('ma_feuille.xls')
 NomProc = 'auto_open'
 NomModule = 'Module1'
 On Error GoTo SecondError
 Set Code = WB.VBProject.VBComponents(NomModule).CodeModule
 DebCode = Code.ProcStartLine(NomProc, VBext_Pk_Proc)
 LongCode = Code.ProcCountLines(NomProc, VBext_Pk_Proc)
 Code.DeleteLines DebCode, LongCode
 Exit Sub
FirstError:
 If Err = 9 Then MsgBox 'Classeur recherché pas ouvert'
 Exit Sub
SecondError:
 If Err = 9 Then MsgBox NomModule & ' Module non trouvé'
 If Err = 35 Then MsgBox NomProc & ' Macro pas trouvée'
 End Sub

Message édité par: olivierd, à: 30/03/2005 11:15
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Olivierd, Didier, le Forum

Depuis plus de deux ans, dans ce Forum, nous conseillons de ne plus utiliser ces anciennes procédures automatiques que sont 'Auto_Open' et 'Auto_Close'...(etc) qui datent d'Excel 5, au bénéfice des Macros évènementielles bien plus puissantes, qui elles, existent depuis Excel 97.

Par conséquent, je n'en utilise plus et je m'en porte vraiment pas plus mal...

Je ne sais pas trop quoi te dire pour ton problème... Si tu supprimes manuellement cette Auto_Open, as-tu le même problème ? As-tu aussi regardé dans les Noms contenus dans le Classeur, car si j'ai bon souvenir ces satanées macro en généraient...

Voilà pour l'instant, à moins que quelqu'un ne soit plus adepte de ces macros qui connaisse ce problème ???

Bonne Journée et courage
@+Thierry
 

olivierd

XLDnaute Junior
re-bonjour à tous,

_Thierry mes connaissances sont très limitées..et je ne sais pas vraiment de quoi tu parles quant aux macros evennementielles

si je supprimme manuellement l'auto_open :RAS

Si je distingue deux macros activées en deux fois: l'une ( enregistrer sous ) puis l'autre( supprimmer l'auto_open)
je n'ai pas le problème.

Si je renomme l'auto_open, je n'ai plus de problème...


QUESTION: comment réaliser la macro à l'ouverture sans utiliser auto_open ?

Bizarre

A+

Message édité par: olivierd, à: 30/03/2005 11:42
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour OLivierd

Vite fait car nous devons faire un ShuttDown de nos servers ici au bureau à Midi

Pour les Macros évènementielles regarde ce Gif :



Tu auras ta première macro évènementielle !!!

Bon App
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 980
Messages
2 094 128
Membres
105 941
dernier inscrit
antho_qh