J'ai quelques soucis avec l'importation de code dans un
fichier Excel.
Voil=E0, je souhaite faire un "merge" de 2 fichiers excel
similaires mais non identiques :
- le premier me fournit les donn=E9es (feuilles excel
export=E9es sans leur code)
- le deuxi=E8me me fournit le code (exportation des
composants vb ".bas", ".cls", ".frm").
Quand je r=E9importe le code :
- les modules ".cls" sont plac=E9s dans le r=E9pertoire
"Modules de Classe" du projet VBA et non pas dans le
r=E9pertoire "Microsoft Excel Objects" o=F9 ils =E9taient au d=E9part.
- les modules ".bas" sont dupliqu=E9s (par exemple
Gestion_Cellules et Gestion_cellules1
- les modules ".frm" g=E9n=E8rent une erreur lors de l'importation.
J'ai cherch=E9 sur le web mais je n'ai rien trouv=E9 sur
l'importation de code et la (re) cr=E9ation de fichier excel
=E0 partir de fichiers export=E9s.
Avez-vous des id=E9es pour r=E9soudre ce probl=E8me ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frédéric Sigonneau
Bonsoir,
Issue d'un échange datant de juin dernier, cette procédure permet d'exporter tout le code d'un classeur dans une autre. A l'origine il s'agissait d'appliquer une cure de minceur à des fichiers qui prennent de l'embonpoint à la suite de nombreuses séances de travail dans l'éditeur VBE, d'où le nom de la procédure. Elle devrait pouvoir te rendre service :
'=========================== 'exporte tout le code d'un classeur dans un autre
Sub CureMinceur() 'JF et fs, mpfe Dim oldnom, newnom As String
oldnom = "ClasseurAExporter.xls" 'à adapter newnom = "monnouveauclasseur" 'juste un nom, sans extension ni chemin complet
Dim Wbk As Workbook, Chemin$ Dim Projet, i&, Module$ Dim m
On Error Resume Next Set Wbk = Workbooks(oldnom) On Error GoTo 0 'dossier temporaire pour l'exportation des modules de code Chemin = Wbk.Path & "tempExport" MkDir Chemin: Chemin = Chemin & "" 'export des modules Set Projet = Wbk.VBProject With Projet For i = 1 To .VBComponents.Count Select Case .VBComponents(i).Type Case 1: .VBComponents(i).Export Chemin & .VBComponents(i).Name & ".bas" Case 2: .VBComponents(i).Export Chemin & .VBComponents(i).Name & ".cls" Case 3: .VBComponents(i).Export Chemin & .VBComponents(i).Name & ".frm" End Select Next End With 'export des feuilles dans un nouveau classeur Wbk.Sheets.Copy ActiveWorkbook.SaveAs Wbk.Path & "" & newnom 'réimport des modules dans le nouveau classeur Module = Dir(Chemin & "*.*") Do While (Len(Module) > 0) On Error Resume Next ActiveWorkbook.VBProject.VBComponents.Import(Chemin & Module).Name = Module On Error GoTo 0 Kill Chemin & Module Module = Dir() Loop 'met à jour le module ThisWorkBook With Workbooks(oldnom).VBProject.VBComponents("thisworkbook").CodeModule newcode = .Lines(1, .CountOfLines) End With newnom = ActiveWorkbook.Name With Workbooks(newnom).VBProject.VBComponents("thisworkbook").CodeModule .DeleteLines 1, .CountOfLines .AddFromString newcode End With 'enregistrement et nettoyage ActiveWorkbook.Save RmDir Chemin
End Sub '=========================== FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
J'ai quelques soucis avec l'importation de code dans un fichier Excel.
Voilà, je souhaite faire un "merge" de 2 fichiers excel similaires mais non identiques : - le premier me fournit les données (feuilles excel exportées sans leur code) - le deuxième me fournit le code (exportation des composants vb ".bas", ".cls", ".frm").
Quand je réimporte le code : - les modules ".cls" sont placés dans le répertoire "Modules de Classe" du projet VBA et non pas dans le répertoire "Microsoft Excel Objects" où ils étaient au départ. - les modules ".bas" sont dupliqués (par exemple Gestion_Cellules et Gestion_cellules1 - les modules ".frm" génèrent une erreur lors de l'importation.
J'ai cherché sur le web mais je n'ai rien trouvé sur l'importation de code et la (re) création de fichier excel à partir de fichiers exportés.
Avez-vous des idées pour résoudre ce problème ?
Merci JMR
Bonsoir,
Issue d'un échange datant de juin dernier, cette procédure permet d'exporter
tout le code d'un classeur dans une autre. A l'origine il s'agissait d'appliquer
une cure de minceur à des fichiers qui prennent de l'embonpoint à la suite de
nombreuses séances de travail dans l'éditeur VBE, d'où le nom de la procédure.
Elle devrait pouvoir te rendre service :
'=========================== 'exporte tout le code d'un classeur dans un autre
Sub CureMinceur()
'JF et fs, mpfe
Dim oldnom, newnom As String
oldnom = "ClasseurAExporter.xls" 'à adapter
newnom = "monnouveauclasseur" 'juste un nom, sans extension ni chemin complet
Dim Wbk As Workbook, Chemin$
Dim Projet, i&, Module$
Dim m
On Error Resume Next
Set Wbk = Workbooks(oldnom)
On Error GoTo 0
'dossier temporaire pour l'exportation des modules de code
Chemin = Wbk.Path & "tempExport"
MkDir Chemin: Chemin = Chemin & ""
'export des modules
Set Projet = Wbk.VBProject
With Projet
For i = 1 To .VBComponents.Count
Select Case .VBComponents(i).Type
Case 1:
.VBComponents(i).Export Chemin & .VBComponents(i).Name & ".bas"
Case 2:
.VBComponents(i).Export Chemin & .VBComponents(i).Name & ".cls"
Case 3:
.VBComponents(i).Export Chemin & .VBComponents(i).Name & ".frm"
End Select
Next
End With
'export des feuilles dans un nouveau classeur
Wbk.Sheets.Copy
ActiveWorkbook.SaveAs Wbk.Path & "" & newnom
'réimport des modules dans le nouveau classeur
Module = Dir(Chemin & "*.*")
Do While (Len(Module) > 0)
On Error Resume Next
ActiveWorkbook.VBProject.VBComponents.Import(Chemin & Module).Name = Module
On Error GoTo 0
Kill Chemin & Module
Module = Dir()
Loop
'met à jour le module ThisWorkBook
With Workbooks(oldnom).VBProject.VBComponents("thisworkbook").CodeModule
newcode = .Lines(1, .CountOfLines)
End With
newnom = ActiveWorkbook.Name
With Workbooks(newnom).VBProject.VBComponents("thisworkbook").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString newcode
End With
'enregistrement et nettoyage
ActiveWorkbook.Save
RmDir Chemin
End Sub
'===========================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
J'ai quelques soucis avec l'importation de code dans un
fichier Excel.
Voilà, je souhaite faire un "merge" de 2 fichiers excel
similaires mais non identiques :
- le premier me fournit les données (feuilles excel
exportées sans leur code)
- le deuxième me fournit le code (exportation des
composants vb ".bas", ".cls", ".frm").
Quand je réimporte le code :
- les modules ".cls" sont placés dans le répertoire
"Modules de Classe" du projet VBA et non pas dans le
répertoire "Microsoft Excel Objects" où ils étaient au départ.
- les modules ".bas" sont dupliqués (par exemple
Gestion_Cellules et Gestion_cellules1
- les modules ".frm" génèrent une erreur lors de l'importation.
J'ai cherché sur le web mais je n'ai rien trouvé sur
l'importation de code et la (re) création de fichier excel
à partir de fichiers exportés.
Issue d'un échange datant de juin dernier, cette procédure permet d'exporter tout le code d'un classeur dans une autre. A l'origine il s'agissait d'appliquer une cure de minceur à des fichiers qui prennent de l'embonpoint à la suite de nombreuses séances de travail dans l'éditeur VBE, d'où le nom de la procédure. Elle devrait pouvoir te rendre service :
'=========================== 'exporte tout le code d'un classeur dans un autre
Sub CureMinceur() 'JF et fs, mpfe Dim oldnom, newnom As String
oldnom = "ClasseurAExporter.xls" 'à adapter newnom = "monnouveauclasseur" 'juste un nom, sans extension ni chemin complet
Dim Wbk As Workbook, Chemin$ Dim Projet, i&, Module$ Dim m
On Error Resume Next Set Wbk = Workbooks(oldnom) On Error GoTo 0 'dossier temporaire pour l'exportation des modules de code Chemin = Wbk.Path & "tempExport" MkDir Chemin: Chemin = Chemin & "" 'export des modules Set Projet = Wbk.VBProject With Projet For i = 1 To .VBComponents.Count Select Case .VBComponents(i).Type Case 1: .VBComponents(i).Export Chemin & .VBComponents(i).Name & ".bas" Case 2: .VBComponents(i).Export Chemin & .VBComponents(i).Name & ".cls" Case 3: .VBComponents(i).Export Chemin & .VBComponents(i).Name & ".frm" End Select Next End With 'export des feuilles dans un nouveau classeur Wbk.Sheets.Copy ActiveWorkbook.SaveAs Wbk.Path & "" & newnom 'réimport des modules dans le nouveau classeur Module = Dir(Chemin & "*.*") Do While (Len(Module) > 0) On Error Resume Next ActiveWorkbook.VBProject.VBComponents.Import(Chemin & Module).Name = Module On Error GoTo 0 Kill Chemin & Module Module = Dir() Loop 'met à jour le module ThisWorkBook With Workbooks(oldnom).VBProject.VBComponents("thisworkbook").CodeModule newcode = .Lines(1, .CountOfLines) End With newnom = ActiveWorkbook.Name With Workbooks(newnom).VBProject.VBComponents("thisworkbook").CodeModule .DeleteLines 1, .CountOfLines .AddFromString newcode End With 'enregistrement et nettoyage ActiveWorkbook.Save RmDir Chemin
End Sub '=========================== FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
J'ai quelques soucis avec l'importation de code dans un fichier Excel.
Voilà, je souhaite faire un "merge" de 2 fichiers excel similaires mais non identiques : - le premier me fournit les données (feuilles excel exportées sans leur code) - le deuxième me fournit le code (exportation des composants vb ".bas", ".cls", ".frm").
Quand je réimporte le code : - les modules ".cls" sont placés dans le répertoire "Modules de Classe" du projet VBA et non pas dans le répertoire "Microsoft Excel Objects" où ils étaient au départ. - les modules ".bas" sont dupliqués (par exemple Gestion_Cellules et Gestion_cellules1 - les modules ".frm" génèrent une erreur lors de l'importation.
J'ai cherché sur le web mais je n'ai rien trouvé sur l'importation de code et la (re) création de fichier excel à partir de fichiers exportés.
Avez-vous des idées pour résoudre ce problème ?
Merci JMR
JMR31
Bonjour,
Suite à vos mails (de la part de Zon et F. Sigonneau) sur les forums Excel-Downloads et Microsoft, j'ai fini par développer 2 solutions différentes :
- la première "light" : le code n'est pas exporté sous forme de fichiers. Le fichier contenant les données est "nettoyé" de son code, lequel est récupéré dans le deuxième fichier excel.
- la seconde plus lourde : les données sont exportées dans un fichier excel "nettoyé" de son code, le code est exporté sous forme de fichiers .bas, .frm, .frx et .fxl (format "maison"). Le code est ensuite réimporté, une partie des modules se retrouve dans les modules de classes, lesquels sont ensuite copiés dans les modules de code liés aux feuilles excel. Cette solution est certes assez lourde mais permet une éventuelle gestion de configuration sur les différents modules de code et données.
Merci pour votre aide. Jean-Michel
Bonjour,
Suite à vos mails (de la part de Zon et F. Sigonneau) sur
les forums Excel-Downloads et Microsoft, j'ai fini par
développer 2 solutions différentes :
- la première "light" : le code n'est pas exporté sous
forme de fichiers. Le fichier contenant les données est
"nettoyé" de son code, lequel est récupéré dans le deuxième
fichier excel.
- la seconde plus lourde : les données sont exportées dans
un fichier excel "nettoyé" de son code, le code est exporté
sous forme de fichiers .bas, .frm, .frx et .fxl (format
"maison"). Le code est ensuite réimporté, une partie des
modules se retrouve dans les modules de classes, lesquels
sont ensuite copiés dans les modules de code liés aux
feuilles excel. Cette solution est certes assez lourde mais
permet une éventuelle gestion de configuration sur les
différents modules de code et données.
Suite à vos mails (de la part de Zon et F. Sigonneau) sur les forums Excel-Downloads et Microsoft, j'ai fini par développer 2 solutions différentes :
- la première "light" : le code n'est pas exporté sous forme de fichiers. Le fichier contenant les données est "nettoyé" de son code, lequel est récupéré dans le deuxième fichier excel.
- la seconde plus lourde : les données sont exportées dans un fichier excel "nettoyé" de son code, le code est exporté sous forme de fichiers .bas, .frm, .frx et .fxl (format "maison"). Le code est ensuite réimporté, une partie des modules se retrouve dans les modules de classes, lesquels sont ensuite copiés dans les modules de code liés aux feuilles excel. Cette solution est certes assez lourde mais permet une éventuelle gestion de configuration sur les différents modules de code et données.