XL 2021 Export d'un Userform au format Docx;

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 !

jeff1494

XLDnaute Occasionnel
Bonsoir à toutes et tous;

Je suis en train de me faire une petite boite à outils me permettant d'avoir des informations pour m'aider à monter une sorte de documentation du projet VBE.
Mon idée est de regrouper des informations du projet me permettant de monter une documentation cohérente du projet.

J'ai créé quelques macros pour me fournir des éléments, qui me serviront à créer de la doc, comme par exemple :
  1. Liste de tous les formulaires du projet.
  2. Liste des contrôles par formulaire.
  3. Liste des feuilles avec les attributs "masquée, protégée".
  4. Liste des noms de cellules et tableaux du classeur.
J'aimerai aussi pouvoir créer au format Word '.Docx' une documentation sur les formulaires. Pouvoir insérer dans un fichier ".docx" une capture des formulaires, et ainsi pouvoir documenter chaque contrôle par exemple.

J'ai trouvé une macro créée par @kiki29 il y a déjà un bon moment (Pris dans son récap des possibilités de jouer avec les PDF et Excel dont voici le lien).

Mon problème est qu'il exporte la capture d'écran au format PDF. Cela fonctionne parfaitement, mais je voudrais bien, en fait, sauvegarder la capture comme image dans un fichier Word.
J'ai bien sûr essayer de voir le code et si je pouvais le modifier. Mais le Hic est que Kiki29 a utilisé des concepts que je ne connais pas. Du genre "Const VK_SNAPSHOT = 44" voire " keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0" et d'autres.

Donc j'avoue humblement que d'une part j'aimerais bien comprendre ce genre d'instruction (L'aide sur les "Constantes KeyCode" m'a permis de comprendre l'idée générale, mais c'est tout.).

Je vous joins un fichier exemple très simple qui utilise la macro de Kiki29, et qui marche parfaitement bien.
Si une personne charitable pouvait :
  1. M'expliquer le code de kiki29.
  2. M'aider à créer une macro qui ferait le même genre de chose, à savoir:
    1. Prendre un "cliché" du formulaire au format Bmp, ou autre (.jpg, ...). Le format n'est une contrainte pour autant qu'il puisse être inclus dans un document.
    2. Pouvoir créer un document Word (format .docx) qui contiendrait ce cliché du formulaire. Le doc sera créé dans le répertoire du classeur, et avec le nom du formulaire.
Je vous joins un petit fichier qui m'a permis de tester la macro de kiki29. Il est minimaliste, juste un formulaire avec quelques contrôles bidons, et 3 boutons.
Un pour l'export vers PDF = "CommandButton1", le deuxième "CommandButton2" qui ne sert à rien d'autre que d'exister, et un troisième "CommandButton3" qui me servirait à créer le fameux document Word;

Si une âme charitable pouvait m'aider je lui en serais reconnaissant.
En attendant je vous souhaite à tous une bonne soirée.
 

Pièces jointes

Solution
bonsoir jeff
VB:
Private Sub CommandButton3_Click()
    PrintScreen
    DoEvents
    Dim wdApp As Object, wdDoc As Object
    ' creation de l'object application word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    ' on créé un document
    Set wdDoc = wdApp.Documents.Add
    ' on colle la capture dans le document
    wdApp.Selection.Paste
    'on centre le tout
    wdApp.Selection.ParagraphFormat.Alignment = 1 ' 0=Left, 1=Center, 2=Right
    ' enregistrement du document
    wdDoc.SaveAs2 Environ("userprofile") & "\desktop\mon userform.docx"
    'on ferme
    wdDoc.Close
    wdApp.Quit
    MsgBox "enregistrement de la capture dans un fichier docw(word) terminé"
End Sub
bonsoir jeff
VB:
Private Sub CommandButton3_Click()
    PrintScreen
    DoEvents
    Dim wdApp As Object, wdDoc As Object
    ' creation de l'object application word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    ' on créé un document
    Set wdDoc = wdApp.Documents.Add
    ' on colle la capture dans le document
    wdApp.Selection.Paste
    'on centre le tout
    wdApp.Selection.ParagraphFormat.Alignment = 1 ' 0=Left, 1=Center, 2=Right
    ' enregistrement du document
    wdDoc.SaveAs2 Environ("userprofile") & "\desktop\mon userform.docx"
    'on ferme
    wdDoc.Close
    wdApp.Quit
    MsgBox "enregistrement de la capture dans un fichier docw(word) terminé"
End Sub
 
et avec du texte avant et apres
Code:
Private Sub CommandButton3_Click()
    PrintScreen
    DoEvents
    Dim wdApp As Object, wdDoc As Object
    ' creation de l'object application word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    ' on créé un document
    Set wdDoc = wdApp.Documents.Add
    'on ecrit le texte avant
    wdApp.Selection.TypeText "Voici la capture d'écran :" & vbCrLf
    ' on colle la capture dans le document
    wdApp.Selection.Paste
    'on centre le tout
    wdApp.Selection.ParagraphFormat.Alignment = 1 ' 0=Left, 1=Center, 2=Right
    'on ecrit du texte appres
    wdApp.Selection.TypeParagraph
    wdApp.Selection.ParagraphFormat.Alignment = 0 ' 0=Left, 1=Center, 2=Right
    wdApp.Selection.TypeText "Fin de la capture." & vbCrLf
    ' enregistrement du document
    wdDoc.SaveAs2 Environ("userprofile") & "\desktop\mon userform.docx"
    'on ferme
    wdDoc.Close
    wdApp.Quit
    MsgBox "enregistrement de la capture dans un fichier docx (word) terminé"
End Sub
 
Bonsoir à tous,

Je ne vois pas trop l'intérêt de créer un fichier Word avec une copie de l'image de l'UserForm mais bon :
VB:
    ActiveSheet.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
    sNomPDF = ActiveWorkbook.Path & "\UserForm.pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomPDF
    
    Set Wapp = CreateObject("Word.Application")
    Wapp.Visible = True
    Set Wdoc = Wapp.Documents.Add
    ActiveSheet.Shapes(1).CopyPicture
    Wapp.Selection.Paste
    Wdoc.SaveAs ActiveWorkbook.Path & "\UserForm.docx"
    Wdoc.Close False
    Wapp.Quit
    MsgBox "Les fichiers 'UserForm.pdf' et 'UserForm.docx' ont été créés..."
Le même bouton crée le fichier pdf et le fichier Word.

Bonne nuit.
 

Pièces jointes

Bonjour à toutes et tous;
Tout d'abord un grand merci à @job75 ainsi qu'a @patricktoulon pour leurs réponses.

Ma demande est tout simplement d'avoir quelques outils pour aider a créer une documentation d'un projet VBA. Rien de plus.

@job75 : L'idée de départ est de pouvoir documenter un formulaire. Avec Word je peux documenter chaque contrôle avec un N° de référence et ainsi expliquer quelle est par exemple la règle de gestion pour ce contrôle.
Avec les quelques autres outils que j'ai, je devrais être capable de produire une documentation complète d'un projet.

@patricktoulon : Un grand merci pour ces codes qui vont plus loin que ce que j'avais demandé. Cela va me permettre de commencer à créer ma documentation. Je n'ai plus qu'à adapter les chemins de fichiers comme je le veux. SUPER.👍👍

Sur ce je vous souhaite une bonne journée à toutes et tous.
 
Dernière édition:
En fait je suis de la vieille école, et ces documentations ne serviront qu'à moi. Le papier est à mon avis personnel plus rassurant, et je peux griffonner mes remarques dessus.
J'adore le papier, et cela me va bien.

Il est sûr que si, comme toi, tu fais des présentations alors le papier est à proscrire. Beaucoup de gens font la remarque, on a pas de documentation, et si tu leur en donne une même au format PDF, de toutes les façons ils ne la lisent pas.
Ils préfèrent souvent te demander de régler leur problème, et quand tu leur explique que tout est dans la doc, la réponse est : "On a pas le temps de la lire".

Bref tout cela pour dire qu'un jour il me faudra suivre ton exemple et passer par quelque chose de plus évolué.
Tant que j'y suis quel outil utilise tu pour faire les captures vidéo de l'exécution à l'écran ?
J'ai un temps regardé sur le Net mais tout est bien trop puissant pour mon simple usage.

Sur ce bonne journée à toi.
 
j'utilise l'enregistreur de flexclip en ligne comme ca je n'installe plus de logiciel chronophage qui est souvent doté de studio de montage.


Toutes les plateformes de partage et visio conférence utilisent ce truc notamment team linkedIn, etc...

C’est intéressant dans le sens ou je peux faire ça sur n'importe quel PC et ou que je suis, sans avoir a installer quoi que ce soit.

J'utilise désormais Clip Champ de Microsoft pour mes montages, ce qui me permet de publier directement sur ma chaîne YouTube.
 
bonjour,
personnellement je copie colle la source VB de mon projet et je demande à chatgpt de rédiger le Manuel utilisateur.

ensuite je copie colle sa réponse dans HTML for null. puis j'inclus les impime écran.

il me reste a sauvegarder et/ou imprimer au choix dans HTML for null.

j'ai fourni le package de déploiement dans les astuces

Créez votre propre moteur de recherche pour vos recettes de cuisine en HTML !​

 
Dernière édition:
bonjour Robert
Moi j'intègre tout
exemple avec le vba indenter interface
demo4.gif
 
Bonjour le forum,

Sur le fichier initial puisqu'il faut utiliser Word il est inutile de créer une feuille Excel auxiliaire :
VB:
Private Sub CommandButton1_Click()
Dim Wapp As Object, Wdoc As Object
 
    Application.ScreenUpdating = False
 
    PrintScreen
    DoEvents
    
    Set Wapp = CreateObject("Word.Application")
    Wapp.Visible = True
    Set Wdoc = Wapp.Documents.Add
    Wapp.Selection.Paste
    Wdoc.Shapes(1).Left = (Wdoc.PageSetup.PageWidth - Wdoc.Shapes(1).Width) / 2 - Wdoc.PageSetup.LeftMargin 'centrage
    
    Wdoc.SaveAs ActiveWorkbook.Path & "\UserForm.docx"
    Wdoc.ExportAsFixedFormat ActiveWorkbook.Path & "\UserForm.pdf", 17 'wdExportFormatPDF
    MsgBox "Les fichiers 'UserForm.docx' et 'UserForm.pdf' ont été créés..."
    
    Wdoc.Close False
    Wapp.Quit
    Unload Me
End Sub
A+
 

Pièces jointes

- 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

Réponses
16
Affichages
467
Réponses
5
Affichages
364
Réponses
7
Affichages
117
Retour