prise en compte modification de macro

  • Initiateur de la discussion Initiateur de la discussion Yoronto
  • 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 !

Yoronto

XLDnaute Nouveau
Bonjour à toutes et à tous!

je voudrais réaliser un outil de gestion de stock sur excel, et pour cela j'ai besoin d'une macro (Macro1) qui dans un premier temps va modifier une ligne d'une Macro2, et dans un deuxième temps la Macro1 lance la Macro2. Cela boucle sur les différents articles.

La Macro2 se modifie bien, malheureusement la modification de la Macro2 ne semble pas être prise en compte. La Macro1 fait exécuter la Macro2 selon son code originel.

Comment faire pour que la modification de la Macro2 soit prise en compte en pleine exécution de la Macro1?

Merci d'avance!
 
Re : prise en compte modification de macro

Oui, bien sûr, et voilà le fichier "épuré" de tout ce qui me semblait inutile pour mon problème.

En bref, tant que la Macro2 n'a pas été chargée, la modification de la ligne MsgBox("articlex") est prise en compte, et la première itération exécute MsgBox("article1").
Mais à la deuxième itération, bien que le code indique MsgBox("article2"), c'est "article1" qui s'affiche à nouveau!

Comment recharger la macro pour que la modif s'exécute?

Merci beaucoup pour vos réponses!
 

Pièces jointes

Re : prise en compte modification de macro

Bonjour à tous,

Si c'est pour faire "défiler les articles dans la MsgBox :

VB:
Sub Test()
For i = 2 To 4
MsgBox Cells(i, 1)
Next
End Sub

A + à tous
 

Pièces jointes

Dernière édition:
Re : prise en compte modification de macro

Bonjour à tous,

Un essai pour respecter ta demande :

VB:
Sub Macro1()
For i = 2 To 4
Cells(1, 1) = Cells(i, 1)
  With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
    LiDeb = .ProcBodyLine("Macro2", 0)
    .DeleteLines LiDeb + 2, 1
    .InsertLines LiDeb + 2, "Msgbox Cells(1, 1)"
  End With
  'Application.Run ("Macro2")
  Call Macro2
Next
'End
'
End Sub
Sub Macro2()
'
MsgBox Cells(1, 1)
'
End Sub

A + à tous
 
Re : prise en compte modification de macro

Bonjour Yoronto, salut JC 🙂

C'est un peu vicieux de modifier le script de Macro2, il vaut mieux paramétrer cette macro.

Cela dit tel quel le problème est intéressant.

Edit : annulé la suite...

A+
 
Dernière édition:
Re : prise en compte modification de macro

Bonjour!

Merci beaucoup pour vos réponses, toujours d'une grande aide.

Par contre, comme le dit job75, modifier une macro par une autre est assez vicieux, je m'en rends compte à présent.

Par curiosité, n'y a-t-il aucun moyen de faire prendre en compte la modification de la Macro2 de la manière dont j'ai (bêtement) codé?

En gros, après chaque exécution de la Macro2, n'y a-t-il aucun moyen de "l'enlever" de la mémoire afin qu'excel recharge le "nouveau" code à l'itération suivante?

Merci à tous!!!
 
Re : prise en compte modification de macro

Bonjour,

la solution de JCGL fonctionne sans problème. Pour le reste, il s'agit de curiosité: je m'étais imaginé que le code était rechargé à chaque fois, or il semblerait que même si le code de la Macro change, le code modifié n'est quant à lui pas chargé en mémoire. Mon but était de savoir s'il existait des "unload macro" en quelque sorte, afin que le prochain CALL charge à nouveau la Macro, mais avec la modif incluse!

J'aurais ainsi fait de même pour d'autres paramètres que la MsgBox, mais sans doute mon code serait dès lors totalement instable. Je vais donc appliquer la solution apportée par JCGL.

Après, pour pas rester idiot, ça m'aurait plu de savoir.

Voilà, et merci à tous!
 
- 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

Discussions similaires

Réponses
10
Affichages
363
Réponses
1
Affichages
236
Retour