Bonjour amis du forum
J'ai deux questions.
Est-il possible, par macro, d'insérer une macro dans un fichier Excel vierge.
Merci de vos solutions à mes problèmes
Version imprimable
Bonjour amis du forum
J'ai deux questions.
Est-il possible, par macro, d'insérer une macro dans un fichier Excel vierge.
Merci de vos solutions à mes problèmes
Bonjour,
Une piste qui copie le Module1 du classeur contenant le programme dans un nouveau classeur vierge.
1) Copiez le code suivant dans un module standard (Module1). C'est ce module qui sera exporté
2) Copiez le code suivant dans un nouveau module (AUTRE que le Module1)Code:
1
2
3
4 Sub toto() MsgBox "Bonjour de Toto" End Sub
Lancez la macro ExportModule qui va créer, dans C:\, un nouveau classeur nommé "vierge.xls" (ou "viergeX.xls" si déjà existant)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 ''Library VBIDE ''C:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB ''Microsoft Visual Basic for Applications Extensibility 5.3 '### Constantes à adapter ### Const CHEMIN As String = "C:\" Const NOUVEAU_FICHIER As String = "Vierge" Const TEMPORAIRE As String = "C:\___tempo.bas" Const MODULE_A_EXPORTER As String = "Module1" '############################ Sub ExportModule() Dim VBP As Object 'VBIDE.VBProject Dim OBJ As Workbook Dim WB As Workbook Dim A$ Dim B$ Dim i& On Error GoTo Erreur Application.ScreenUpdating = False Application.VBE.ActiveVBProject.VBComponents(MODULE_A_EXPORTER).Export (TEMPORAIRE) Set OBJ = CreateObject("Excel.sheet") Set WB = OBJ A$ = NOUVEAU_FICHIER B$ = A$ Do B$ = Dir(CHEMIN & B$ & ".xls") If B$ <> vbNullString Then i& = i& + 1 B$ = NOUVEAU_FICHIER & i& A$ = B$ Else WB.Windows(1).Caption = A$ & ".xls" WB.SaveAs CHEMIN & A$ & ".xls" Exit Do End If Loop Set WB = Nothing Set OBJ = Nothing Set WB = GetObject(CHEMIN & A$ & ".xls") WB.Windows(1).Visible = True i& = 0 For Each VBP In Application.VBE.VBProjects i& = i& + 1 If VBP.Filename = CHEMIN & A$ & ".xls" Then Application.VBE.VBProjects(i&).VBComponents.Import (TEMPORAIRE) WB.Save WB.Close Exit For End If Next VBP Erreur: On Error Resume Next Set WB = Nothing Call Kill(TEMPORAIRE) Application.ScreenUpdating = True End Sub
et y exporter le Module1 contenant la macro "toto".
Cordialement.
PMO
Patrick Morange
Merci de ta réponse, mais ce code ne fonctionne pas chez moi(excel2003)
Bonjour
Un peu de lecture : http://silkyroad.developpez.com/VBA/VisualBasicEditor/
Philippe
Bonjour,
J'ai oublié de préciser une chose IMPORTANTE.
Dans Excel, faites menu Outils/Macro/Sécurité... onglet Editeurs approuvés
et cochez la case d'option "Faire confiance au projet Visual Basic" puis cliquez OK.
Sans cela, le programme ne fonctionne pas.
Cordialement.
PMO
Patrick Morange
Merci à vous, c'est très instructif, mais ca plante toujours :
Erreur '50035'
La méthode 'Export de l'objet '_VBComponent' a échoué
Quelle est la référence VBA project que j'aurais oublié ?