Importer/Exporter des macros
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
Code:
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 |
Exporter tous le code contenu du fichier A
Encore une fois Merci Ouskel'n'or (au fait pourquoi on ne le voi plus :( )
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
|
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 |
Importer les fichier
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
Code:
1 2 3
| Private Sub Worksheet_SelectionChange(ByVal target As Range)
chgselect(target)
sub |
et dans un module
Code:
1 2 3
| sub chgselect(target as range)
'mon code
end sub |
C'est pas le plus pratique quand même, si personne n'a mieux je ferais ca