GeoTrouvePas
XLDnaute Impliqué
Re : Besoin de votre avis sur la conception d'un outil
Bonjour tout le monde,
Etant relativement tenace quand j'ai une idée derrière la tête, j'ai continué sur mon idée de départ qui consistait à faire un classeur capable de mettre à jour tous ses modules, userform et modules de classe en important ceux contenus dans un nouveau classeur.
Je peux vous dire qu'après moult test et prises de tête, j'y suis enfin arrivé. Mais je dois dire que le résultat n'est pas aussi satisfaisant que ce que j'attendais. Il semble en effet que la présence de variables publiques dans certains modules puissent poser problèmes. De plus, ce mode de fonctionnement posera problème pour mettre à jour la procédure de mise à jour elle même.
Je vais donc me pencher sur la solution de Cafeine proposée par Staple qui consiste "simplement" à enregistrer la macro complémentaire sous un autre nom, la décocher de la liste des macros complémentaires puis rajouter la nouvelle version à cette liste.
Pour que ce boulot n'ait pas servi à rien, voici 3 procédures que j'ai adaptées depuis les sources de Ce site n'existe plus à cette occasion et qui pourront peut être vous servir un jour :
Supprimer tous les modules, userform et modules de classe de ThisWorkBook :
Exporter tous les modules, userform et modules de classe d'un classeur (désigné par l'argument "Chemin") vers un répertoire (désigné par l'argument "Temp") :
Importer dans ThisWorkbook tous les modules, userform et modules contenus dans un répertoire (désigné par l'argument "Rep_Source") :
Je vous remercie tous de m'avoir fait part de vos interrogations, de vos doutes, de vos suggestions et de vos idées au cours de ce fil !
Bonjour tout le monde,
Etant relativement tenace quand j'ai une idée derrière la tête, j'ai continué sur mon idée de départ qui consistait à faire un classeur capable de mettre à jour tous ses modules, userform et modules de classe en important ceux contenus dans un nouveau classeur.
Je peux vous dire qu'après moult test et prises de tête, j'y suis enfin arrivé. Mais je dois dire que le résultat n'est pas aussi satisfaisant que ce que j'attendais. Il semble en effet que la présence de variables publiques dans certains modules puissent poser problèmes. De plus, ce mode de fonctionnement posera problème pour mettre à jour la procédure de mise à jour elle même.
Je vais donc me pencher sur la solution de Cafeine proposée par Staple qui consiste "simplement" à enregistrer la macro complémentaire sous un autre nom, la décocher de la liste des macros complémentaires puis rajouter la nouvelle version à cette liste.
Pour que ce boulot n'ait pas servi à rien, voici 3 procédures que j'ai adaptées depuis les sources de Ce site n'existe plus à cette occasion et qui pourront peut être vous servir un jour :
Supprimer tous les modules, userform et modules de classe de ThisWorkBook :
Code:
Sub SupprimerModules()
Dim ObjectToKill As Object
For Each ObjectToKill In ThisWorkbook.VBProject.VBComponents
If ObjectToKill.Type <> 100 Then
ThisWorkbook.VBProject.VBComponents.Remove ObjectToKill
End If
Next
End Sub
Exporter tous les modules, userform et modules de classe d'un classeur (désigné par l'argument "Chemin") vers un répertoire (désigné par l'argument "Temp") :
Code:
Sub ExporterModules(ByVal Chemin As String, ByVal Rep_Temp As String)
Dim BookToExport As Workbook
Dim ObjectToExport As Object
Application.EnableEvents = False
Set BookToExport = Workbooks.Open(Chemin)
Application.EnableEvents = True
For Each ObjectToExport In BookToExport.VBProject.VBComponents
Select Case ObjectToExport.Type
Case 1
ObjectToExport.Export Rep_Temp & ObjectToExport.Name & ".bas"
Case 2
ObjectToExport.Export Rep_Temp & ObjectToExport.Name & ".cls"
Case 3
ObjectToExport.Export Rep_Temp & ObjectToExport.Name & ".frm"
End Select
Next
BookToExport.Close
End Sub
Importer dans ThisWorkbook tous les modules, userform et modules contenus dans un répertoire (désigné par l'argument "Rep_Source") :
Code:
Sub ImporterModules(ByRef Rep_Source)
Dim ObjectToImport As String
ObjectToImport = Dir(Rep_Source & "\*.*")
Do While ObjectToImport <> ""
Application.VBE.ActiveVBProject.VBComponents.Import (Rep_Source & ObjectToImport)
ObjectToImport = Dir
Loop
End Sub
Je vous remercie tous de m'avoir fait part de vos interrogations, de vos doutes, de vos suggestions et de vos idées au cours de ce fil !
Dernière édition: