Je ne suis pas de ces génies, mais j'ai eu à le faire dernièrement, donc je peux surement t'aider.
Voici ce que moi j'ai utilisé pour mettre à jour la macro Workbook_open() de ThisWorkbook
Workbooks.Open nomdufichier 'ouvrir le fichier
set VBCodeMod = ActiveWorkbook.VBProject.VBComponents('ThisWorkbook').CodeModule
With VBCodeMod
LineNum = .CountOfLines + 1
.InsertLines LineNum, _
'Sub Workbook_Open()' & Chr(13) & _
' Dim nomfichier As String' & Chr(13) & _
' 'ouvrir le fichier macros.xla' & Chr(13) & _
' nomfichier = ''c:\\Excel\\macros.xla''' & Chr(13) & _
' Workbooks.Open nomfichier' & Chr(13) & _
'End Sub'
End With
La partie en rouge représente le texte qui sera ajouté à la macro workbook_open() du fichier à modifier. Le mien était plus court.
Mais avant de remplacer le code, il faut au préalable effacer l'ancien sinon tu vas te retrouver avec la même macro 2 fois. Pour faire cela, moi j'ai utilisé ce qui suit:
Workbooks.Open nomdufichier 'ouvrir le fichier à mettre à jour
Set VBCodeMod = ActiveWorkbook.VBProject.VBComponents('ThisWorkbook').CodeModule
With VBCodeMod
StartLine = .ProcStartLine('Workbook_Open', vbext_pk_Proc)
HowManyLines = .ProcCountLines('Workbook_Open', vbext_pk_Proc)
.DeleteLines StartLine, HowManyLines
End With
En espérant que ça puisse t'aider. Si ton code à changé est trop long, tu peux toujours faire un fichier txt et le mettre à jour à partir de ce fichier.