Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Creer un module avec VBA

6 réponses
Avatar
Henri
Bonjour,

Afin de rajouter un meme module dans des fichiers excel, sur plusieurs
postes, je souhaite creer un fichier excel unique, avec une macro auto_open,
qui creerait à l'ouverture un module dans un autre fichier ("classeur2.xls"
par exemple) (un peu à la maniere d'un fichier .reg qui peu rajouter des
entrées dans la base de registre)

J'ai trouvé comment creer ce module (Application.modules.add), mais je
n'arrive pas a trouver la commande pour écrire du code dans ce module. Mes
recherches sur le net sont restées sans succès.
Je n'ai pas non plus trouvé comment renommer un module (l'appeler ModuleCrée
par exemple au lieu de Module2)

Quel est donc le code pour qu'une macro copie du texte dans un nouveau
module (si cela est possible) ? et pour renommer un module?

Merci d'avance pour votre aide.
cordialement,

6 réponses

Avatar
jps
bonjour Henri
pour renommer ton module :

ThisWorkbook.VBProject.VBComponents("Module2").Name = "NouveauNom"

pour le reste, il te faudra attendre les Einstein qui rôdent dans le
quartier dès que le soleil est couché
jps

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

Bonjour,

Afin de rajouter un meme module dans des fichiers excel, sur plusieurs
postes, je souhaite creer un fichier excel unique, avec une macro
auto_open, qui creerait à l'ouverture un module dans un autre fichier
("classeur2.xls" par exemple) (un peu à la maniere d'un fichier .reg qui
peu rajouter des entrées dans la base de registre)

J'ai trouvé comment creer ce module (Application.modules.add), mais je
n'arrive pas a trouver la commande pour écrire du code dans ce module. Mes
recherches sur le net sont restées sans succès.
Je n'ai pas non plus trouvé comment renommer un module (l'appeler
ModuleCrée par exemple au lieu de Module2)

Quel est donc le code pour qu'une macro copie du texte dans un nouveau
module (si cela est possible) ? et pour renommer un module?

Merci d'avance pour votre aide.
cordialement,





Avatar
jps
re
pour la copie du module, j'ai trouvé ceci, signé Hervé
HTH et bon courage
jps

début de copie

Private Sub ExportImportModule()
Dim Classeur As Workbook
Dim VBPMod As Object
Dim NomClasseur As String
Dim NomModule As String
Dim Chemin As String

NomClasseur = "Mon Classeur.xls"
NomModule = "Module1"

On Error Resume Next
Set VBPMod = ThisWorkbook.VBProject.VBComponents(NomModule)
If Err <> 0 Then
MsgBox "Le module ' " & NomModule & _
" ' n'existe pas !", , "Module."
Exit Sub
End If

Set Classeur = Workbooks(NomClasseur)
If Err <> 0 Then
MsgBox "Veuillez ouvrir le classeur ' " & NomClasseur & _
" ' pour l'import du module !", , "Module."
Exit Sub
End If

On Error GoTo 0

Chemin = ThisWorkbook.Path & "" & NomModule & ".bas"
'exporte
ThisWorkbook.VBProject.VBComponents(NomModule).Export Chemin
'importe
Workbooks(NomClasseur).VBProject.VBComponents.Import Chemin
'supprimer le module si nécessaire
'Kill Chemin

Set VBPMod = Nothing
Set Classeur = Nothing

End Sub

fin de copie

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

Bonjour,

Afin de rajouter un meme module dans des fichiers excel, sur plusieurs
postes, je souhaite creer un fichier excel unique, avec une macro
auto_open, qui creerait à l'ouverture un module dans un autre fichier
("classeur2.xls" par exemple) (un peu à la maniere d'un fichier .reg qui
peu rajouter des entrées dans la base de registre)

J'ai trouvé comment creer ce module (Application.modules.add), mais je
n'arrive pas a trouver la commande pour écrire du code dans ce module. Mes
recherches sur le net sont restées sans succès.
Je n'ai pas non plus trouvé comment renommer un module (l'appeler
ModuleCrée par exemple au lieu de Module2)

Quel est donc le code pour qu'une macro copie du texte dans un nouveau
module (si cela est possible) ? et pour renommer un module?

Merci d'avance pour votre aide.
cordialement,





Avatar
Modeste
Bonsour® Henri avec ferveur ;o))) vous nous disiez :

Afin de rajouter un meme module dans des fichiers excel, sur plusieurs
postes, je souhaite creer un fichier excel unique, avec une macro
auto_open, qui creerait à l'ouverture un module dans un autre fichier
("classeur2.xls" par exemple) (un peu à la maniere d'un fichier .reg
qui peu rajouter des entrées dans la base de registre)

J'ai trouvé comment creer ce module (Application.modules.add), mais je
n'arrive pas a trouver la commande pour écrire du code dans ce
module.


Ecrire directement dans un module existant ne semble pas etre une bonne idée...
il vaut mieux récuperer le module, le modifier
puis procéder par annule et remplace

en l'occurence le "Einstein" du VBE a écrit ceci
http://www.cpearson.com/excel/vbe.htm
qui pourra efficacement te servir de livre de chevet ;o)))


@+
;o)))

Avatar
LSteph
Bonsoir,

C'est pas forcément la meilleure idée
mais
de même que tu peux exporter un module
tu peux l'importer.

Sub vienzimodule()
Application.VBE.ActiveVBProject.VBComponents.Import _
"C:Program FilesMicrosoft OfficeOFFICE11Module4.bas"
End Sub

Cordialement.

lSteph

Bonjour,

Afin de rajouter un meme module dans des fichiers excel, sur plusieurs
postes, je souhaite creer un fichier excel unique, avec une macro auto_open,
qui creerait à l'ouverture un module dans un autre fichier ("classeur2.xls"
par exemple) (un peu à la maniere d'un fichier .reg qui peu rajouter des
entrées dans la base de registre)

J'ai trouvé comment creer ce module (Application.modules.add), mais je
n'arrive pas a trouver la commande pour écrire du code dans ce module. Mes
recherches sur le net sont restées sans succès.
Je n'ai pas non plus trouvé comment renommer un module (l'appeler ModuleCrée
par exemple au lieu de Module2)

Quel est donc le code pour qu'une macro copie du texte dans un nouveau
module (si cela est possible) ? et pour renommer un module?

Merci d'avance pour votre aide.
cordialement,





Avatar
Henri
Bonsoir,
Merci à tous, je suis arrivé à mes fins grace à la fonction d'importation
que vous me conseilliez. Je n'ai cependant pas reussi à exporter le module
grace à la macro, mais j'ai donc exporté cela manuellement, dans le meme
dossier, et la macro m'a réimporté ca toute seule dans le bon fichier!

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

Bonjour,

Afin de rajouter un meme module dans des fichiers excel, sur plusieurs
postes, je souhaite creer un fichier excel unique, avec une macro
auto_open, qui creerait à l'ouverture un module dans un autre fichier
("classeur2.xls" par exemple) (un peu à la maniere d'un fichier .reg qui
peu rajouter des entrées dans la base de registre)

J'ai trouvé comment creer ce module (Application.modules.add), mais je
n'arrive pas a trouver la commande pour écrire du code dans ce module. Mes
recherches sur le net sont restées sans succès.
Je n'ai pas non plus trouvé comment renommer un module (l'appeler
ModuleCrée par exemple au lieu de Module2)

Quel est donc le code pour qu'une macro copie du texte dans un nouveau
module (si cela est possible) ? et pour renommer un module?

Merci d'avance pour votre aide.
cordialement,





Avatar
LSteph
Bonsoir Henri,

Tu avais .Export mais avec un petit caprice en plus
désigner l'.item puis le chenim qu'on lui veut.

Sub ExpMod()
Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
.Export ("c:Monmodule2.bas")
End Sub


... mais j'ai donc exporté cela manuellement
C'est tout aussi simple!


... à tous, je suis arrivé à mes fins
...et ainsi ...à tous c'est notre plaisir!


@bientôt.

lSteph




Bonsoir,
Merci à tous, je suis arrivé à mes fins grace à la fonction d'importation
que vous me conseilliez. Je n'ai cependant pas reussi à exporter le module
grace à la macro, mais j'ai donc exporté cela manuellement, dans le meme
dossier, et la macro m'a réimporté ca toute seule dans le bon fichier!

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