Exporter un userform

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dionys0s

XLDnaute Impliqué
Bonsoir le forum


j'ai ce code (trouvé sur http://www.vbfrance.com grâce à James 007) que j'ai adapté à ma macro et qui fonctionne très bien :

Code:
 ' Dimension variables
   Dim strCode As String
   Dim vbCom As VBComponent
   Dim modObj As Object

 ' Set object to the module you want to export.
   Set modObj = _
      Application.VBE.ActiveVBProject.VBComponents.Item("Module4")
 ' Place code in a string.
   strCode = modObj.CodeModule.Lines(1, modObj.CodeModule.CountOfLines)
 ' Create new workbook.
   ActiveSheet.Copy
 ' Create a new module in workbook.
   Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
 ' Add code to new module from string variable.
   Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
      .CodeModule.AddFromString (strCode)

En gros, je copie un module du classeur à partir duquel est lancée la procédure dans un nouveau classeur. C'est tip top youpi ça fonctionne. Mais je n'arrive pas à l'adapter pour qu'il exporte un userform en plus du module concerné (le Module4). Je pense qu'il n'y a pas grand chose à rajouter, mais je ne connais absolument pas les codes, et je n'ai rien trouvé sur la FAQ de excel.developpez.com

Merci d'avance pour votre aide
 
Re : Exporter un userform

Bonsoir


Voici de quoi t'aider
Code:
Sub ExporterTousLesUserforms()[COLOR=Green] [URL="http://www.developpez.net/forums/d181724/logiciels/microsoft-office/general-vba/exporter-userform-projet/#post1165799"]'[/URL]selon SilkyRoad[/COLOR]
Dim LaForm
    For Each LaForm In ThisWorkbook.VBProject.VBComponents
        'MsgBox LaForm.Name
        If LaForm.Type = 3 Then ThisWorkbook.VBProject.VBComponents(LaForm.Name).Export "D:\xls\" & LaForm.Name & ".frm"
    Next
End Sub
 
Dernière édition:
Re : Exporter un userform

ReBonsoir

dyonysOs
Voici de quoi t'aider
voulait dire pour moi: "Voici un début de piste"

•) Pour que cela t'incline à tester, modifier, tester de nouveau
•) à faire de nouvelles recherches à propos de ThisWorkbook.VBProject.VBComponents
(sur le forum et/ou sur le net...)

EDITION: Mes nocturnes salutations Herr Kjin 😉
 
Dernière édition:
Re : Exporter un userform

Bonsoir, salutations M'sieur Staple
Exporte le formulaire dans un fichier temporaire puis le réimporte dans le nouveau classeur
Code:
Sub CopieForm()
Dim pForm As String, wbkS As Workbook, wbkD As Workbook
pForm = "C:\...\Form.frm" 'à adapter
Set wbkS = ThisWorkbook
Set wbkD = Workbooks.Add
With wbkS
    .VBProject.VBComponents("Userform1").Export pForm
End With
With wbkD
    .VBProject.VBComponents.Import pForm
End With
Kill pForm
End Sub
A+
kjin
 
Re : Exporter un userform

ReBonsoir

dyonysOs
voulait dire pour moi: "Voici un début de de piste"

•) Pour que cela t'incline à tester, modifier, tester de nouveau
•) à faire de nouvelles recherches à propos de ThisWorkbook.VBProject.VBComponents
(sur le forum et/ou sur le net...)

Autant pour moi alors. En tout cas merci pour le coup de pouce.

Kjin merci beaucoup pour le code. J'essaie ça demain matin.
 
Re : Exporter un userform

Bonsoir, salutations M'sieur Staple
Exporte le formulaire dans un fichier temporaire puis le réimporte dans le nouveau classeur
Code:
Sub CopieForm()
Dim pForm As String, wbkS As Workbook, wbkD As Workbook
pForm = "C:\...\Form.frm" 'à adapter
Set wbkS = ThisWorkbook
Set wbkD = Workbooks.Add
With wbkS
    .VBProject.VBComponents("Userform1").Export pForm
End With
With wbkD
    .VBProject.VBComponents.Import pForm
End With
Kill pForm
End Sub
A+
kjin

En fait j'ai essayé ce soir. Ca marche très bien c'est super merci beaucoup.
Ceci dit il ne m'a pas supprimé le userform à la fin. J'ai du faire une erreur quelque part.

Dernière question. En remplaçant "Set wbkD = Workbooks.Add" par "ActiveSheet.Copy" la macro plante c'est normal ?
 
Re : Exporter un userform

Bonsoir,
Ceci dit il ne m'a pas supprimé le userform à la fin. J'ai du faire une erreur quelque part.
Le fichier frm ? Ca m'étonne
Par contre, il est vrai que j'ai oublié le frx créé automatiquement lors de l'export 🙄
Code:
Sub CopieForm()
Dim pFld$, pForm$, wbkS As Workbook, wbkD As Workbook
pFld = [I][B][COLOR="Blue"]"C:\...\"[/COLOR][/B][/I] [I]'à adapter-ne pas oublier le dernier anti-slash[/I]
pForm = pFld & "Form.frm"
pFrx = pFld & "Form.frx"
Set wbkS = ThisWorkbook
wbkS.Sheets([I][B][COLOR="Blue"]"Tartempion"[/COLOR][/B][/I]).Copy [I]'à adapter[/I]
Set wbkD = ActiveWorkbook
With wbkS
    .VBProject.VBComponents([B][I][COLOR="Blue"]"Userform1"[/COLOR][/I][/B]).Export pForm [I]'à adapter[/I]
End With
With wbkD
    .VBProject.VBComponents.Import pForm
End With
Kill pForm
Kill pFrx
End Sub
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour