Ecrire du code dans une macro

H

hchorot

Guest
Bonsoir le forum,

Je travaile sur un projet et j'ai besoin de savoir comment je peux, à l'aide de code, mettre à jour le code d'une macro sur un feuille.

Je suis dans le brouillard le plus total...

J'ai vu un FIL sur le sujet mais lorsque j'ai voulu l'adapter, j'ai méchamment 'planté' mon fichier. (Heureusement j'ai une copie de secours)

Je ne suis pas en mesure de transmettre un fichier ZIP maintenant mais le ferais demain. (eh oui la sauvegarde est restée à mon travail c'est bète je sais !)
ça laisse le temps au grands génies du forum de commencer à réfléchir à la question.
En attendant le ZIP Merci

hchorot :unsure:
 

Zangel

XLDnaute Nouveau
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.
 

Discussions similaires

Réponses
5
Affichages
282
Réponses
93
Affichages
2 K