Bonjour,
Dans l'ordre je vous explique ce que je souhaite faire, ce que je sais faire puis ou ca coince.
J'ai un fichier bien lourd avec Module userform et code dans les feuilles.
Je souhaite pouvoir en quelque sorte délocaliser le code. En gros avoir un bouton qui me permet d'aller chercher la dernière version des macro sur le résaux et de les charger à la place des macro actuels.
Ce que je sais faire:
Ou plus tot ne connaissant pas grand chose, voir même rien, à la manipulation de code par macro ce que j'ai trouvé dans la partie contribution et la faq
Avec un ficheir B supprimer tous les modules et userform d'un fichier A
Merci Ouskel'n'or
Exporter tous le code contenu du fichier A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub ListerLesModulesAeffacer() Dim CL1 As Workbook Dim CL2 As Workbook Dim VBComp Set CL1 = ThisWorkbook 'Le fichier contenant ces macros Set CL2 = Workbooks("fichierA.xls") Set VBComp = CL2.VBProject.VBComponents With VBComp For Each VBComp In CL2.VBProject.VBComponents If VBComp.Type = 1 Or VBComp.Type = 3 Then _ SupprimerLeModule CL2, VBComp.Name Next VBComp End With Set CL2 = Nothing Set VBComp = Nothing CL1.Close False 'Fermeture sans enregistrer du fichier contenant ces macros End Sub Sub SupprimerLeModule(CL2, NomModule) With CL2.VBProject .VBComponents.Remove .VBComponents(NomModule) End With End Sub
Encore une fois Merci Ouskel'n'or (au fait pourquoi on ne le voi plus)
Importer les fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub exportt() Dim LeFich ' Activation de la référence ' "Microsoft Visual Basic for Applications Extensibility" On Error Resume Next ThisWorkbook.VBProject.References.AddFromGuid _ GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=0, Minor:=0 On Error GoTo 0 For Each LeFich In ThisWorkbook.VBProject.VBComponents Select Case LeFich.Type Case 1 ThisWorkbook.VBProject.VBComponents(LeFich.Name).export "C:\MesMacros\" & LeFich.Name & ".bas" Case 2 ThisWorkbook.VBProject.VBComponents(LeFich.Name).export "C:\MesMacros\" & LeFich.Name & ".cls" Case 3 ThisWorkbook.VBProject.VBComponents(LeFich.Name).export "C:\MesMacros\" & LeFich.Name & ".frm" Case 100 ThisWorkbook.VBProject.VBComponents(LeFich.Name).export "C:\MesMacros\LesFeuilles\" & LeFich.Name & ".cls" End Select Next End Sub
là j'utilise tels quel le code de Fred65200
Mon problème, Je récupère sans problème mes modules, mes userforms, mais par contre, les code contenue dans mes feuilles ne sont pas effacé, et pas chargé non plus il se retrouve simplement dans des modules de classe.
Et accessoirement importer les macro dans le fichier A a partir du fichier B (je ne sais que importer dans A a partir de A)
je sais ca fait pas mal de question mais si quelqu'un a un peu de temps a me consacrer, ca me dépannerais bien
ps : il faudrait que cela tourne sous 2003 et 2000
Edit : j'arrive a exporter a partir de B dans A
Sinon j'ai pensé a tout délocaliser dans des subroutines contenue dans les modules
exemple
et dans un module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Worksheet_SelectionChange(ByVal target As Range) chgselect(target) sub
C'est pas le plus pratique quand même, si personne n'a mieux je ferais ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sub chgselect(target as range) 'mon code end sub
Partager