Mise à jour de marco par une macro

  • Initiateur de la discussion Initiateur de la discussion 21ch181
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

2

21ch181

Guest
Bonjour à tous

Tout d'abord, meilleurs voeux à tous.

Je cherche à mettre à jour une macro existante dans un classeur par l'exécution d'une autre macro.

Sauriez vous m'aider SVP ?

Cordialement.
 
J'ai eu le même problème, et j'ai trouvé la solution sur un site internet dont je ne me souviens plus le nom. Tu peux coller la macro ci dessous dans ton VBA et l'adapter à ton problème.

Le principe est le suivant ta macro va aller ouvrir la macro présente dans l'autre fichier (que tu aura ouvert) et la modifier ligne par ligne (c'est un peu laborieux mais ça marche)

Dans mon exemple (aide toi des commentaires que j'ai inséré dans la macro)je modifie la ligne 169 de la macro appelée 'Recopie' présente dans le module1. Il faut retaper la ligne 169 en entier même si on ne veut en changer qu'un bout. Et ça pour chaque ligne que tu dois modifier...

Voilà j'espère que ça t'aidera.
Bon courage

Scarlett

-----------------------------------------------


Sub testModif()
Dim Wbk As Workbook, NomProc$, NomModule$, LiModif&, TxtModif$
Dim Nomfichier As String
Dim formule As String

Application.ScreenUpdating = False


Sheets('Patch-RMA05').Select
Nomfichier = Range('F5').Value
Windows(Nomfichier & '.xls').Activate

'Macro validation : EBIFCT
Set Wbk = ActiveWorkbook 'Fichier à modifier
NomProc = 'Recopie' 'le nom de la procedure
NomModule = 'Module1' 'le nom du module dans lequel est la macro
LiModif = 169 'la ligne de la macro qu'il faudra modifier
TxtModif = 'EBI = Range(' & Chr(34) & 'S51' & Chr(34) & ').Value' 'le texte ENTIER de la ligne à modifier
ModifMacro Wbk, NomProc, NomModule, LiModif, TxtModif
End sub

Sub ModifMacro(Classeur As Workbook, NomMacro$, Module$, Ligne&, Modif$)
Dim LiDeb&

With Classeur.VBProject.VBComponents(Module).CodeModule
LiDeb = .ProcBodyLine(NomMacro, 0)
.DeleteLines LiDeb + Ligne, 1
.InsertLines LiDeb + Ligne, Modif
End With

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
20
Affichages
630
Retour