du code qui écrit du code dans un autre classeur

Le
pirot
Bonjour,
Est il possible de créer du code qui écrit du code dans un autre
classeur ?
je m'explique:
un collègue utilise un classeur nommé VO
je dois lui intégrer ou modifier régulièrement du code (dans un
module )

et PARFOIS affecter un raccourci clavier pour une nouvelle macro.
Je peux bien sûr exporter le module en .bas, lui transmettre le
fichier .bas par mail
et lui demander d'intégrer cela en vba,
et enfin d'affecter un raccourci clavier à la macro.

Je préfèrerais lui transmettre un classeur excel nommé MAJ par exempl=
e
(car les maj sont nombreuses, et cela est un peu pénible à faire à
distance)
qui
1. copie le module dans son classeur VO
2. et qui ajoute à Private Sub Workbook_Open() la
ligne :Application.OnKey "^{F12}", "mef" par exemple
pour avoir le raccourci clavier voulu.
possibilo ???
merci de vos réponses
pirot
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21305821
Bonjour.
Un exemple (le classeur cible doit être ouvert) :

Sub AjoutCode()
With
Workbooks("100303.xlsm").VBProject.VBComponents("ThisWorkbook").CodeModule
.insertlines 1, "Private Sub Workbook_Open()"
.insertlines 2, "Msgbox ""toto"""
.insertlines 3, "End Sub"
End With
End Sub

Cordialement.
Daniel

Bonjour,
Est il possible de créer du code qui écrit du code dans un autre
classeur ?
je m'explique:
un collègue utilise un classeur nommé VO
je dois lui intégrer ou modifier régulièrement du code (dans un
module )

et PARFOIS affecter un raccourci clavier pour une nouvelle macro.
Je peux bien sûr exporter le module en .bas, lui transmettre le
fichier .bas par mail
et lui demander d'intégrer cela en vba,
et enfin d'affecter un raccourci clavier à la macro.

Je préfèrerais lui transmettre un classeur excel nommé MAJ par exemple
(car les maj sont nombreuses, et cela est un peu pénible à faire à
distance)
qui
1. copie le module dans son classeur VO
2. et qui ajoute à Private Sub Workbook_Open() la
ligne :Application.OnKey "^{F12}", "mef" par exemple
pour avoir le raccourci clavier voulu.
possibilo ???
merci de vos réponses
pirot


michdenis
Le #21306121
Bonjour,

Des fois, il est plus facile de copier l'ensemble d'un module que
de modifier seulement certaines procédures !

La macro suivante copie tout le code de tous les modules.
Dans le classeur de destination, elle débute par supprimer
le code déjà existant et ajoute le nouveau code.

Ceci est possible seulement chacun des classeurs ont le
même nombre de modules et que ces derniers ont le
même nom.

'---------------------------------------------------
Sub Copie_Code_De_Ce_Classeur_Vers_Un_Autre()

Dim Texte As String
Dim Wk As Workbook

Set Wk = Workbooks("Classeur2.xls") 'Classeur de destination

For Each vbc In ThisWorkbook.VBProject.VBComponents
With vbc.CodeModule
If .CountOfLines > 0 Then
Texte = .Lines(1, .CountOfLines)
With Wk.VBProject.VBComponents(vbc.Name).CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Texte
End With
End If
End With
Next
End Sub
'---------------------------------------------------




"pirot"
Bonjour,
Est il possible de créer du code qui écrit du code dans un autre
classeur ?
je m'explique:
un collègue utilise un classeur nommé VO
je dois lui intégrer ou modifier régulièrement du code (dans un
module )

et PARFOIS affecter un raccourci clavier pour une nouvelle macro.
Je peux bien sûr exporter le module en .bas, lui transmettre le
fichier .bas par mail
et lui demander d'intégrer cela en vba,
et enfin d'affecter un raccourci clavier à la macro.

Je préfèrerais lui transmettre un classeur excel nommé MAJ par exemple
(car les maj sont nombreuses, et cela est un peu pénible à faire à
distance)
qui
1. copie le module dans son classeur VO
2. et qui ajoute à Private Sub Workbook_Open() la
ligne :Application.OnKey "^{F12}", "mef" par exemple
pour avoir le raccourci clavier voulu.
possibilo ???
merci de vos réponses
pirot
pirot
Le #21306351
bonjour,

j'ai un souci avec le code car j'ai une erreur: 1004 La méthode
'VBProject' de l'objet '_Workbook' a échoué.

alors j'ai essayé:

With ActiveWorkbook
With .VBProject
With .VBComponents("Module1").CodeModule
End With
End With
End With
en mode pas à pas c'est sur .VBProject que j'obtiens l'erreur
dois je activer une option dans vba, ou bien?
merci de vos réponses
cordialement
pirot
michdenis
Le #21306471
Bonjour,

Ce code ne comporte pas d'erreur.

Dans la fenêtre de l'éditeur de code / barre des menus / outils / références /
as-tu des références cochées marquées "Manquantes" ?





"pirot"

bonjour,

j'ai un souci avec le code car j'ai une erreur: 1004 La méthode
'VBProject' de l'objet '_Workbook' a échoué.

alors j'ai essayé:

With ActiveWorkbook
With .VBProject
With .VBComponents("Module1").CodeModule
End With
End With
End With
en mode pas à pas c'est sur .VBProject que j'obtiens l'erreur
dois je activer une option dans vba, ou bien?
merci de vos réponses
cordialement
pirot
pirot
Le #21306811
bonjour,
effectivement, il faut cocher dans excel dans la sécurité "faire
confiance au projet visual basic.
cela fonctionne à présent.

Dernière question
le code:
.insertlines 1, "Private Sub Workbook_Open()"
.insertlines 2, "Msgbox ""toto"""
.insertlines 3, "End Sub"
fonctionne bien, mais si, plus tard, je veux ajouter une ligne dans
workbook_open() qui existe déjà,
comment faire pour insérer une ligne dans le "sub" existant ?
merci
cordialelement
pirot
pirot
Le #21307771
bonjour,
Après encore quelques essais,
mon projet est finalisé, grâce à vous (michdenis et daniel)
tout fonctionne bien, et comme voulu
Merci milles fois
la liste est toujours efficace !
@+
pirot
Publicité
Poster une réponse
Anonyme