OVH Cloud OVH Cloud

comment éditer le code d'un module VBA via un autre module VBA ?

34 réponses
Avatar
ewts
Je souhaiterais écrire un module VBA qui soit capable de modifier (par
exemple via recherche/remplacement) le code d'un autre module VBA

10 réponses

1 2 3 4
Avatar
JLuc
Paul V avait soumis l'idée :
Put1, j'aurais du m'en douter. Je vais aussi me coucher.


Non, surtout pas ! Même si on les voit pas trop, on a besoin de tes
lumières lol

--
JLuc

Avatar
Paul V
J'ai comme l'impression que tu réponds à coté de la question :-)

Manipuler les objets, etc se fait dans le code de la procédure, me
semble-t-il.
Ma question était pourquoi changer du code par du code.

Justement, pour me permettre de passer au stade suivant de connaissance,
peux-tu me donner un exemple concret ou c'est utile de modifier du code par
du code dans Excel?

Merci d'avance.

Paul V

"MichDenis" a écrit dans le message de news:


| Plus sérieusement, quelqu'un peut-il me dire quand il serait intéressant
de
| modifier un code par du code? Un petit exemple me ferais plaisir car je
n'en
| vois pas vraiment les avantages par rapport à des modifications
manuelles .

As-tu envie de dire que les artisans chez bilou se casseraient le caillou
pour créer des objets, des propriétés et des méthodes seulement pour
leur plaisir ?

Vba, c'est du sérieux ....et surtout très utile ... tu verras lorsque tu
auras
passé de stade de débutant...

;-)))




Avatar
isabelle
c'est bien sur une question de débutant, mais faut quant même débuter quel que part.
je te donne un exemple :

je voulais apprendre à créer un userform, avec plusieurs boutons.
j'avais écris autant de macro événementiel qu'il y avait de bouton, et toutes avaient les même commandes.
je me suis demandé si je pouvais ajouter (via une macro) un autre commande sur chacune de ces macro événementiel.
remarque qu'il n'y avais pas de but précis, mais seulement un exercise pour connaitre la syntaxe.
défaut de conception, c'est sur, mais faut quant même débuter quel que part.
aujourd'hui je connais les modules de classe, et la quantité de macro événementiel est réduite.
conclusion, en apprentissage, le but n'est pas nécessairement de créer quelque chose de plausible, mais seulement d'apprendre.

isabelle



Il y a des jours comme cela ou on tape du doigt sur le clavier pour passer
le temps ;-)
.

T'es sur que t'es débutante en VBA?
Et si tu avais compris tu aurais vu que cette macro remplace une procédure
par une autre ce qui ne me semble pas être la demande initiale.

Mais c'est pas grave, demain cela ira mieux.

Plus sérieusement, quelqu'un peut-il me dire quand il serait intéressant de
modifier un code par du code? Un petit exemple me ferais plaisir car je n'en
vois pas vraiment les avantages par rapport à des modifications manuelles .

Bien à toi;

Paul V

"isabelle" a écrit dans le message de news:


quel mouche te pique, paul,
moi qui suis débutant en VBA, je comprends cette macro du premier coup.
;-)

isabelle



Mon cher MichDenis,

J'admire tes compétences larges et variées et malgré cela, une question
me brule les doigts depuis des années. Et aujourd'hui, je me lache.

Qu'il soit bien entendu que ceci n'est en aucun cas une critique de la
demande initiale tout à fait légitime. Chacun essaye de se faire aider et
notre demandeur à raison de le faire.

Mais penses-tu avoir réellement aidé notre ami?

Te t'es tu jamais demandé si pondre du code pour autrui , comme s'il
s'agissait d'oeufs ou même pire, était d'une quelconqiue aide à long
terme pour des demandeurs qui la plupart du temps n'y comprenne rien.
Dans le cas qui nous occupe, une brave homme (ou femme) demande un truc
complètement idiot. Je résume mon analyse à la lecture de la question.

"Je souhaiterais écrire un module VBA"
Dois-je t'apprendre que rien que ce bout de phrase revele déjà combien le
demandeur est novice. Ecrire un module, (presque) personne ne le peut.

"qui soit capable de modifier (par exemple via recherche/remplacement) "
Modier du code par recherche/remplacer, ça c'est une idée qu'elle est
bonne.

"le code d'un autre module VBA "
le code d'un module??? Dur -dur

Il apparaît évident à une simple lecture que le demandeur n'est pas
vraiement habitué à manipuler le VBA.

Alors, ou est l'utilité de lui fourguer une procédure dont il ne
comprendra vraisemblablement rien.

Mais je m'emballe et je me demande bien à quel titre. Peut-être celui
d'ancien du groupe et aussi mon grand age.

Ne crois-tu pas qu'aider réellement le demandeur ne passe pas par une
certaine éducation. L'obliger à expliquer son problème et pour ce faire,
ne pas s'arreter à une idée préconcue de solution. Lui demander
d'analyser. De reflechir même et éventuellement faire l'effort pour
s'améliorer durablement pour devenir un jour un caïd comme tu l'es
toi-même devenu, non pas par la gâce divine ou par des cadeaux
empoisonnés mais par un travail régulier et profond.

Mon message est fini et j'hésite à l'effacer ou l'envoyer. Mais comme
c'est un jour de m.. aujourd'hui, hop, c'est parti.

Cordiallement

Paul V


"MichDenis" a écrit dans le message de news:



Voici un petit exemple simple :

'---------------------------
Sub RemplacerUneProcédure()
Dim S As String
Dim Debut As Integer, NbLignes As Integer

'Le texte de ta nouvelle macro
S = "Sub NouvelleMacro()" & vbCrLf
S = S & "Msgbox ""Bonjour""" & vbCrLf
S = S & "End Sub"

'Supposons que la macro à remplacer est dans le module1
'Ce bout de code va détruire la macro
With ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule
Debut = .ProcStartLine("Test", 0)
NbLignes = .ProcCountLines("Test", 0)
.DeleteLines Debut, NbLignes
'Pour ajouter la procédure contenue dans la variable S
.AddFromString S
End With

End Sub
'---------------------------



"ewts" a écrit dans le message de news:

Je souhaiterais écrire un module VBA qui soit capable de modifier (par
exemple via recherche/remplacement) le code d'un autre module VBA













Avatar
Paul V
Hello MichDenis,

Fait pas trop attention à ma bafouille. je suis un vieux crouton raleur qui
pense que quand un demandeur pose une question, si on lui répond, c'est par
la meilleure solution possible. Je sais, c'est idiot.
Mais on ne me changera plus.

Qu'il soit bien clair que je n'ai aucunement mis en cause la qualité de tes
réponses en général et que celles-ci apporte effectivement énormément à ceux
qui te lisent, dont je suis.

Je crois aussi qu'un forum ne remplace pas une formation, bien sur et je ne
compte pas trop sur Bilou, en général. Il ne m'écoute pas trop.

Je me disais simplement en lisant ta réponse que le demandeur n'avait pas
réponse adaptée à sa demande, et qu'il n'était pas beaucoup plus avancé
qu'avant.

Dommage.

Cordiallement

Paul V.



"MichDenis" a écrit dans le message de news:
eu$
Bonjour Paul,

Sur le fond, tu as peut être raison...
beaucoup de réponses ne sont pas adaptées au niveau
de connaissance de l'usager...

Sauf que moi, je lis les questions en diagonales, et j'essaie de "pondre"
pour reprendre une de tes expressions un bout de code commenté
susceptible d'aider la communauté (ceux qui rechercheraient une
façon de faire). Je suppose que les réponses ne sont pas
seulement lues que par le demandeur ...

Mais au delà de cela, je ne crois pas que l'on puisse faire de
la formation personnalisée par l'intermédiaire d'un forum ....
je ne crois pas que ce soit la place... Ce que font les utilisateurs
de toutes ces procédures que l'on retrouve ici ou sur le Net, ce
n'est pas vraiment ma préoccupation... Quelle est la meilleure
méthode d'apprentissage pour un usager particulier ....ce n'est
pas vraiment mon problème non plus...Tu (vous) ne voudrais
quand même pas que j'élabore une grille d'analyse des questions
seulement pour pouvoir adapter réponse, commentaires etc...
C'est à chacun à se prendre en main ...et de joindre des organismes
susceptibles de les aider dans leur démarche de formation ! Le forum
ce n'est qu'un instrument et non une panacée.

Tu peux toujours demander à Bilou qui semble vouloir s'impliquer
davantage dans la formulation des jeunes américains (voir ce site
internet http://www.standup.org/ ) s'il ne voudrait pas mettre en
place quelques répondeurs rémunérés spécialisés en pédagogie ?
(bonne chance)

Bizarre ta réaction et celles de d'autres participants aujourd'hui...
depuis l'avenue de cjoint.com, non seulement les répondeurs
"pondent" codes et formules mais ils vont jusqu'à fournir
un classeur exemple + explications... Laissant bien peu de travail
au demandeur ! Ceci alourdit considérablement la lecture
du forum...(moi, je n'ouvre pas tous ces classeurs). Et pourtant,
Je n'ai pas lui beaucoup de commentaires négatifs sur cette façon
de faire. C'est le prix à payer pour s'assurer que le demandeur
s'intéresser aux réponses ? .... Pourquoi pas ... rien de trop beau
pour les demandeurs ... ;-)

Ceci étant, libre à chacun de s'investir de la mission qu'il croit
être la sienne ... mais je ferai pas du porte à porte pour m'assurer
de la compréhension de chacun... ce n'est pas mon truc à moi.

Bonne journée,

Salutations.







"Paul V" a écrit dans le message de news:
%
Mon cher MichDenis,

J'admire tes compétences larges et variées et malgré cela, une question me
brule les doigts depuis des années. Et aujourd'hui, je me lache.

Qu'il soit bien entendu que ceci n'est en aucun cas une critique de la
demande initiale tout à fait légitime. Chacun essaye de se faire aider et
notre demandeur à raison de le faire.

Mais penses-tu avoir réellement aidé notre ami?

Te t'es tu jamais demandé si pondre du code pour autrui , comme s'il
s'agissait d'oeufs ou même pire, était d'une quelconqiue aide à long terme
pour des demandeurs qui la plupart du temps n'y comprenne rien.
Dans le cas qui nous occupe, une brave homme (ou femme) demande un truc
complètement idiot. Je résume mon analyse à la lecture de la question.

"Je souhaiterais écrire un module VBA"
Dois-je t'apprendre que rien que ce bout de phrase revele déjà combien le
demandeur est novice. Ecrire un module, (presque) personne ne le peut.

"qui soit capable de modifier (par exemple via recherche/remplacement) "
Modier du code par recherche/remplacer, ça c'est une idée qu'elle est
bonne.

"le code d'un autre module VBA "
le code d'un module??? Dur -dur

Il apparaît évident à une simple lecture que le demandeur n'est pas
vraiement habitué à manipuler le VBA.

Alors, ou est l'utilité de lui fourguer une procédure dont il ne
comprendra
vraisemblablement rien.

Mais je m'emballe et je me demande bien à quel titre. Peut-être celui
d'ancien du groupe et aussi mon grand age.

Ne crois-tu pas qu'aider réellement le demandeur ne passe pas par une
certaine éducation. L'obliger à expliquer son problème et pour ce faire,
ne
pas s'arreter à une idée préconcue de solution. Lui demander d'analyser.
De
reflechir même et éventuellement faire l'effort pour s'améliorer
durablement
pour devenir un jour un caïd comme tu l'es toi-même devenu, non pas par la
gâce divine ou par des cadeaux empoisonnés mais par un travail régulier et
profond.

Mon message est fini et j'hésite à l'effacer ou l'envoyer. Mais comme
c'est
un jour de m.. aujourd'hui, hop, c'est parti.

Cordiallement

Paul V


"MichDenis" a écrit dans le message de news:

Voici un petit exemple simple :

'---------------------------
Sub RemplacerUneProcédure()
Dim S As String
Dim Debut As Integer, NbLignes As Integer

'Le texte de ta nouvelle macro
S = "Sub NouvelleMacro()" & vbCrLf
S = S & "Msgbox ""Bonjour""" & vbCrLf
S = S & "End Sub"

'Supposons que la macro à remplacer est dans le module1
'Ce bout de code va détruire la macro
With ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule
Debut = .ProcStartLine("Test", 0)
NbLignes = .ProcCountLines("Test", 0)
.DeleteLines Debut, NbLignes
'Pour ajouter la procédure contenue dans la variable S
.AddFromString S
End With

End Sub
'---------------------------



"ewts" a écrit dans le message de news:

Je souhaiterais écrire un module VBA qui soit capable de modifier (par
exemple via recherche/remplacement) le code d'un autre module VBA









Avatar
Paul V
On les voit pas car elles ne sont pas très grandes ;-)

A+

Paul V

"JLuc" a écrit dans le message de news:

Paul V avait soumis l'idée :
Put1, j'aurais du m'en douter. Je vais aussi me coucher.


Non, surtout pas ! Même si on les voit pas trop, on a besoin de tes
lumières lol

--
JLuc





Avatar
MichDenis
| Manipuler les objets, etc se fait dans le code de la procédure, me
| semble-t-il.
| Ma question était pourquoi changer du code par du code.

A )Imagine que tu as créé un modèle contenant un certain nombre de procédures.`

B ) Le modèle créé est en application dans l'entreprise depuis un certain temps

C ) Suite à de nouvelles exigences, on doivent modifier le modèle (une procédure
ou un module)

D ) Facile de modifier le modèle mais est-ce que cela te tente d'ouvrir manuellement
100 - 150 classeurs ou plus pour modifier un bout de code ?

E ) Évidemment, la question ne se pose pas quotidiennement ! C'est plus simple
de prendre 15 minutes pour un petit programme que de vouloir tout faire à la main.
Avatar
FxM
Virus ! (ok, je sors)

@+
FxM


J'ai comme l'impression que tu réponds à coté de la question :-)

Manipuler les objets, etc se fait dans le code de la procédure, me
semble-t-il.
Ma question était pourquoi changer du code par du code.

Justement, pour me permettre de passer au stade suivant de connaissance,
peux-tu me donner un exemple concret ou c'est utile de modifier du code par
du code dans Excel?

Merci d'avance.

Paul V

"MichDenis" a écrit dans le message de news:

| Plus sérieusement, quelqu'un peut-il me dire quand il serait intéressant
de
| modifier un code par du code? Un petit exemple me ferais plaisir car je
n'en
| vois pas vraiment les avantages par rapport à des modifications
manuelles .

As-tu envie de dire que les artisans chez bilou se casseraient le caillou
pour créer des objets, des propriétés et des méthodes seulement pour
leur plaisir ?

Vba, c'est du sérieux ....et surtout très utile ... tu verras lorsque tu
auras
passé de stade de débutant...

;-)))








Avatar
Stéphan DuQuébec
Bonjour messieurs, dames,

Sans vouloir me mêler de ce qui ne me regarde pas, j'ajouterais simplement
que les codes, soluces, réponses, conseils qui sont fournis par MicheDenis,
et par tous les autres qui mettent leur grande compétence au service de la
communauté, ne servent pas qu'à l'initiateur de la question mais à des
centaines (milliers !?!?!?) d'autres lecteurs silencieux qui eux, ne sont pas
tous débutants. Ne perdons pas ça de vue.....c'est ce qui fait la richesse,
je crois, d'un site comme le mpfe.

Amicalement.
Avatar
Paul V
La je suis bluffé.

Mais c'est quand même fort tiré par les cheveux.

Si j'ai bien compris, (moi qui suis que pauvre débutant, je fais ce que je
peux), sur base d'un modèle on a déjà pas mal de classeurs qui existent.
Et on veut non seulement modifier le modèle mais aussi (de feçon
retroactive, si je puis dire) tous les classeurs crées sur ce modèle.
Ce ne serait pas mieux et plus rapide de modifier le modèle et d'exporter
les modules vers les classeurs existant par une petit boucle vite fait?
Mais comme tu dis, cela ne se fais pas tous les jours et le moment venu, on
discutera de la question;-)

Merci pour l'exemple.

A propos, tu penses que notre demandeur a créé un modèle et veut modifier le
code de tous les classeurs qui existent dejà, ( je blague, bien sur)

A+

PAul V

"MichDenis" a écrit dans le message de news:
%

| Manipuler les objets, etc se fait dans le code de la procédure, me
| semble-t-il.
| Ma question était pourquoi changer du code par du code.

A )Imagine que tu as créé un modèle contenant un certain nombre de
procédures.`

B ) Le modèle créé est en application dans l'entreprise depuis un certain
temps

C ) Suite à de nouvelles exigences, on doivent modifier le modèle (une
procédure
ou un module)

D ) Facile de modifier le modèle mais est-ce que cela te tente d'ouvrir
manuellement
100 - 150 classeurs ou plus pour modifier un bout de code ?

E ) Évidemment, la question ne se pose pas quotidiennement ! C'est plus
simple
de prendre 15 minutes pour un petit programme que de vouloir tout
faire à la main.




Avatar
Paul V
Tout le monde est le bienvenu.

Je repondrais simplement que c'est quand même mieux quand le demandeur a
aussi une réponse utile et adaptée;-)

A+

Paul V

"Stéphan DuQuébec" a écrit dans le
message de news:
Bonjour messieurs, dames,

Sans vouloir me mêler de ce qui ne me regarde pas, j'ajouterais simplement
que les codes, soluces, réponses, conseils qui sont fournis par
MicheDenis,
et par tous les autres qui mettent leur grande compétence au service de la
communauté, ne servent pas qu'à l'initiateur de la question mais à des
centaines (milliers !?!?!?) d'autres lecteurs silencieux qui eux, ne sont
pas
tous débutants. Ne perdons pas ça de vue.....c'est ce qui fait la
richesse,
je crois, d'un site comme le mpfe.

Amicalement.


1 2 3 4