Remplacer une macro par une autre par macro

Comment "tuer" une macro dans un classeur et la remplacer par le contenu d'un fichier test, le tout par macro ?

Quelques remerciements aux sponsors... Christophe Jean, Papou, F Sigonneau, DJoss, CPearson, Laurent Longre, Michdenis, Hervé, P Fauconnier, et notre inoxydable Misange, Monsieur et Madame Google. C'est pire que le Tour de France !

sub majtuesub() 
 'supprimer une procédure d'un module feuille et uniquement cette procédure 
 'supprime l'événement Worksheet_Change 
 ' 1 - lancer majtuesub() pour supprimer 
 ' 2 - lancer majinstsub()pour installer la nouvelle sub qui est dans  
' le fichier C:\submajfourdigit.txt

  Dim Classeur As Workbook
  Dim Module As Object
  Dim n As Integer
 
  For n = 3 To 84
    DelProc ThisWorkbook, "Feuil" & n, "Worksheet_Change"
  Next n
 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
sub majinstsub()
  Dim a_inserer
  Dim Module As Object
  Dim Classeur As Workbook
  Dim n As Integer
  Application.ScreenUpdating = False
  With Application.FileSearch
    On Error Resume Next
    For Each Module In Classeur.VBProject.VBComponents
      For n = 3 To 84
        a_inserer = ActiveWorkbook.VBProject.VBComponents("Feuil" & n).Name
        insertion_macro a_inserer
      Next n
    Next Module
  End With
  Application.ScreenUpdating = True
 end sub
sub insertion_macro(a_inserer) 
 Dim vbcomp   
For Each vbcomp In ActiveWorkbook.VBProject.VBComponents     
If vbcomp.Name = a_inserer Then       
With vbcomp.CodeModule         
.AddFromFile ("C:\
submajfourdigit.txt")
      End With
      Exit For
    End If
  Next vbcomp
 end sub

Auteur :

Mots clefs associés à cette page : , , , ,