Extraire les informations d'un userform Excel et le mettre sur Word

Bonjour le forum,

On m'a demandé de faire une génération de fiche automatique avec les informations qui sont rentrés dans un userform.

J'ai regardé les moyens existants pour faire ce genre d'opération. D'après ce que j'ai compris, il faut utiliser le publipostage. Mais je ne pense pas prendre cette option car ce serait trop long à remplir de façon manuelle.

J'ai vu plusieurs sujets par rapport à ça mais je suis assez perdu... Est-ce que vous avez un lien qui permettrait d'approfondir le sujet ?

Merci d'avance !

Bonjour, sans exemple difficile de comprendre votre besoin ?

D'ordinaire un Userform est utilisé pour alimenter une base de données. Si vous avez déjà ce userform ? il pourrait très bien être utilisé pour rappeler une saisie

déjà effectuée et alimenter dans un autre onglet dans lequel une fiche serait générée.

Ensuite l'idée d'un publipostage est pas trop mal non plus ; il suffirait d'avoir un onglet excel qui servirait au publipostage avec uniquement les valeurs de la base selectionnées par un userform.

Et bonjour,

Je reviens d'un week-end compliqué. Je te remercie pour la réponse mais j'ai essayé de m'y pencher dessus et j'arrive à générer une fiche word qui récupère les informations !

Sub creer_word()
    Dim NDF As String, NDF2 As String, Rep1 As String, Rep2 As String
    Dim WordApp As Object, WordDoc As Object

    Rep1 = "Chemin 1" 'Chemin indiquant où est la trame 
    Rep2 = "Chemin 2" 'Chemin indiquant où il doit le sauvegarder
    NDF = Rep1 & "Trame_Valac.docx"

    If Not Exist_Fichier(NDF) Then ' Verifie si le doc existe
        MsgBox "Document word manquant", vbExclamation, "Floflo"
    Else
        On Error Resume Next
        If Fichier_IsOpen(NDF) Then ' Verifie si le doc est déja ouvert
             Set WordApp = GetObject(, "Word.Application")
            Set WordDoc = WordApp.Documents(NDF)
        Else
            Set WordApp = CreateObject("Word.Application")
            Set WordDoc = WordApp.Documents.Open(NDF, ReadOnly:=False)
        End If

        With WordApp
            .Visible = False

            WordDoc.Bookmarks("LBO").Range.Text = Me.Saisie_LBO.Text
            WordDoc.Bookmarks("Date_Emission").Range.Text = Me.Saisie_Emi.Text
            WordDoc.Bookmarks("DSH").Range.Text = Me.Saisie_PCN.Text
            WordDoc.Bookmarks("Désignation_Actia").Range.Text = Me.Saisie_Designat.Text
            WordDoc.Bookmarks("Fabricant").Range.Text = Me.Saisie_Fab.Text
            WordDoc.Bookmarks("Impact_Demande").Range.Text = Me.Saisie_Impact.Text
            WordDoc.Bookmarks("Level").Range.Text = Me.Saisie_LEVEL.Text
            WordDoc.Bookmarks("N_Valac").Range.Text = Me.Saisie_NbValac.Text
            WordDoc.Bookmarks("Nature_demande").Range.Text = Me.Saisie_NatDem.Text
            WordDoc.Bookmarks("Raison_Validation").Range.Text = Me.Saisie_Obser.Text
            WordDoc.Bookmarks("Recommandation_Ser_Composants").Range.Text = Me.Saisie_RecoSerCompo.Text
            WordDoc.Bookmarks("Référence_Service_Composants").Range.Text = Me.Saisie_RefSerCompo.Text
            WordDoc.Bookmarks("Référence_Actia").Range.Text = Me.Saisie_RefAct.Text
            WordDoc.Bookmarks("Référence_Doc").Range.Text = Me.Saisie_RefDoc.Text
            WordDoc.Bookmarks("Référence_Fabricant").Range.Text = Me.Saisie_RefFab.Text
            WordDoc.Bookmarks("Cas_Emploi").Range.Text = Me.Saisie_CasEmploi.Text

        End With

       ' pour enregistrer le doc avec les divers éléments
        NDF2 = Rep2 & "VALAC" & Saisie_NbValac & ".docx"
        WordDoc.Application.ActiveDocument.SaveAs NDF2

        WordApp.Visible = True ' laisse le doc ouvert
        Set WordDoc = Nothing
        Set WordApp = Nothing
        MsgBox "Document word prêt"

    End If
End Sub

J'ai une petite question mais je pense l'avoir trouvé. Mon fichier créer un dossier à chaque fois qu'on rentre des informations. Et je voudrais mettre ce fichier word dans le dossier qui a été précédemment créé. Si je dis pas de bêtises, ça doit ressembler à ça :

' pour enregistrer le doc avec les divers éléments
        NDF2 = Rep2 &  "\nom_dossier_créé\" "VALAC " & Saisie_NbValac & ".docx"
        WordDoc.Application.ActiveDocument.SaveAs NDF2

Bonne journée !

Je viens de trouver les réponse et la génération d'une fiche marche parfaitement.

Mais j'ai encore une autre question : Si j'ai générer une fiche et que je veux modifier des valeurs qui sont déjà rentrés. Comment on fait pour remplacer les valeurs précédemment rentrées ?

Bonjour,

À partir du moment où les signets n'existent plus, bon courage !

Perso, si ça devait changer j'en générerais un nouveau.

À partir du moment où les signets n'existent plus, bon courage !

Ils sont toujours présent dans le fichier généré, on va dire que j'ai de la chance

Je voudrais bien voir ça. À ma connaissance ça serait une première.

Le fichier original :

image

Le fichier généré :

image

étrange, puisque normalement ta variable remplace le signet.

Du coup j'ai repris le code pour générer un word avec les valeur renseignés auparavant. J'ai essayé de l'adapter pour qu'il puisse modifier la valeur déjà remplie. Mais ça ne marche pas car il rajoute à la suite ce que je voudrais modifier.

Le code :

Private Sub Modif_GénérationValac_Click()
    Dim NDF As String, NDF2 As String, Rep As String
    Dim WordApp As Object, WordDoc As Object

    Rep = "N:\OEM\SHARE\y-Mass_Production_Engineering\vie serie\VALIDATION_OBSOLESCENCE\Répertoire validation\" & Modif_VALAC.value & " " & Modif_RefAct.value & " " & Modif_NatDem.value & " " & Modif_Fab.value & "\" & "VALAC " & Modif_VALAC.value & ".docx"
    NDF = Rep

    If Not Exist_Fichier(NDF) Then ' Verifie si le doc existe
        MsgBox "Document word manquant", vbExclamation, "Et merde"
    Else
        On Error Resume Next
        If Fichier_IsOpen(NDF) Then ' Verifie si le doc est déja ouvert
            Set WordApp = GetObject(, "Word.Application")
            Set WordDoc = WordApp.Documents(NDF)
        Else
            Set WordApp = CreateObject("Word.Application")
            Set WordDoc = WordApp.Documents.Open(NDF, ReadOnly:=False)
        End If

        With WordApp
            .Visible = False

            WordDoc.Bookmarks("LBO").Range.Text = Me.Modif_LBO.Text
            WordDoc.Bookmarks("Date_Emission").Range.Text = Me.Modif_Emi.Text
            WordDoc.Bookmarks("DSH").Range.Text = Me.Modif_PCN.Text
            WordDoc.Bookmarks("Désignation_Actia").Range.Text = Me.Modif_Designat.Text
            WordDoc.Bookmarks("Fabricant").Range.Text = Me.Modif_Fab.Text
            WordDoc.Bookmarks("Impact_Demande").Range.Text = Me.Modif_Impact.Text
            WordDoc.Bookmarks("Level").Range.Text = Me.Modif_Level.Text
            WordDoc.Bookmarks("N_Valac").Range.Text = Me.Modif_VALAC.Text
            WordDoc.Bookmarks("Nature_demande").Range.Text = Me.Modif_NatDem.Text
            WordDoc.Bookmarks("Raison_Validation").Range.Text = Me.Modif_Obser.Text
            WordDoc.Bookmarks("Recomandation_Ser_Composants").Range.Text = Me.Modif_RecoSerCompo.Text
            WordDoc.Bookmarks("Reférence_Service_Composants").Range.Text = Me.Modif_RefSerCompo.Text
            WordDoc.Bookmarks("Référence_Actia").Range.Text = Me.Modif_RefAct.Text
            WordDoc.Bookmarks("Référence_Doc").Range.Text = Me.Modif_RefDoc.Text
            WordDoc.Bookmarks("Référence_Fabricant").Range.Text = Me.Modif_RefFab.Text
            WordDoc.Bookmarks("Cas_Emploi").Range.Text = Me.Modif_CasEmp.Text
            WordDoc.Bookmarks("Nb_Art_stt20").Range.Text = Me.Modif_NbStt.Text
            WordDoc.Bookmarks("Demandeur").Range.Text = Me.Modif_Dem.Text
            WordDoc.Bookmarks("Responsable_VS").Range.Text = Me.Modif_RespVal.Text

        End With

       ' pour enregistrer le doc avec les divers éléments
        NDF2 = Rep & "\" & Modif_VALAC.value & " " & Modif_RefAct.value & " " & Modif_NatDem.value & " " & Modif_Fab.value & "\" & "VALAC " & Modif_VALAC.value & ".docx"
        WordDoc.Application.ActiveDocument.SaveAs NDF2

        WordApp.Visible = True ' laisse le doc ouvert
        Set WordDoc = Nothing
        Set WordApp = Nothing
    End If
End Sub

Du coup j'ai essayé de passer par une fonction adaptée pour faire la mise à jour du signet mais ça ne marche pas :(

Private Sub Modif_GénérationValac_Click()
    Dim NDF As String, Rep1 As String, Rep2 As String
    Dim WordApp As Object, WordDoc As Object

    Rep1 = "N:\OEM\SHARE\y-Mass_Production_Engineering\vie serie\VALIDATION_OBSOLESCENCE\_ DIVERS\"
    Rep2 = "N:\OEM\SHARE\y-Mass_Production_Engineering\vie serie\VALIDATION_OBSOLESCENCE\Répertoire validation\" & Modif_VALAC & " " & Modif_RefAct & " " & Modif_NatDem & " " & Modif_RefFab & "\" & "VALAC " & Modif_VALAC & ".docx"
    NDF = Rep1 & "Trame_Valac.docx"

    If Not Exist_Fichier(Rep2) Then ' Verifie si le doc existe

            Set WordApp = CreateObject("Word.Application")
            Set WordDoc = WordApp.Documents.Open(NDF, ReadOnly:=False)

        With WordApp
            .Visible = False

            WordDoc.Bookmarks("LBO").Range.Text = Me.Modif_LBO.Text
            WordDoc.Bookmarks("Date_Emission").Range.Text = Me.Modif_Emi.Text
            WordDoc.Bookmarks("DSH").Range.Text = Me.Modif_PCN.Text
            WordDoc.Bookmarks("Désignation_Actia").Range.Text = Me.Modif_Designat.Text
            WordDoc.Bookmarks("Fabricant").Range.Text = Me.Modif_Fab.Text
            WordDoc.Bookmarks("Impact_Demande").Range.Text = Me.Modif_Impact.Text
            WordDoc.Bookmarks("Level").Range.Text = Me.Modif_Level.Text
            WordDoc.Bookmarks("N_Valac").Range.Text = Me.Modif_VALAC.Text
            WordDoc.Bookmarks("Nature_demande").Range.Text = Me.Modif_NatDem.Text
            WordDoc.Bookmarks("Raison_Validation").Range.Text = Me.Modif_Obser.Text
            WordDoc.Bookmarks("Recomandation_Ser_Composants").Range.Text = Me.Modif_RecoSerCompo.Text
            WordDoc.Bookmarks("Reférence_Service_Composants").Range.Text = Me.Modif_RefSerCompo.Text
            WordDoc.Bookmarks("Référence_Actia").Range.Text = Me.Modif_RefAct.Text
            WordDoc.Bookmarks("Référence_Doc").Range.Text = Me.Modif_RefDoc.Text
            WordDoc.Bookmarks("Référence_Fabricant").Range.Text = Me.Modif_RefFab.Text
            WordDoc.Bookmarks("Cas_Emploi").Range.Text = Me.Modif_CasEmp.Text
            WordDoc.Bookmarks("Nb_Art_stt20").Range.Text = Me.Modif_NbStt.Text
            WordDoc.Bookmarks("Demandeur").Range.Text = Me.Modif_Dem.Text
            WordDoc.Bookmarks("Responsable_VS").Range.Text = Me.Modif_RespVal.Text

        End With

       'pour enregistrer le doc avec les divers éléments
        WordDoc.Application.ActiveDocument.SaveAs Rep2

        WordApp.Visible = True ' laisse le doc ouvert
        Set WordDoc = Nothing
        Set WordApp = Nothing

    Else
        On Error Resume Next
        If Fichier_IsOpen(Rep2) Then ' Verifie si le doc est déja ouvert
            Set WordApp = GetObject(, "Word.Application")
            Set WordDoc = WordApp.Documents(Rep1)
        Else
            Set WordApp = CreateObject("Word.Application")
            Set WordDoc = WordApp.Documents.Open(Rep2, ReadOnly:=False)
        End If

        With WordApp
            .Visible = False

            MAJ_Signet "LBO", Modif_LBO.Text, Rep2
            MAJ_Signet "Date_Emission", Modif_Emi.Text, Rep2
            MAJ_Signet "DSH", Modif_DSH.Text, Rep2
            MAJ_Signet "Désignation_Actia", Modif_Designat, Rep2
            MAJ_Signet "Fabricant", Modif_Fab, Rep2
            MAJ_Signet "Impact_Demande", Modif_Impact, Rep2
            MAJ_Signet "Level", Modif_Level, Rep2
            MAJ_Signet "N_Valac", Modif_VALAC, Rep2
            MAJ_Signet "Nature_demande", Modif_NatDem, Rep2
            MAJ_Signet "Raison_Validation", Modif_Obser, Rep2
            MAJ_Signet "Recomandation_Ser_Composants", Modif_RecoSerCompo, Rep2
            MAJ_Signet "Reférence_Service_Composants", Modif_RefSerCompo, Rep2
            MAJ_Signet "Référence_Actia", Modif_RefAct, Rep2
            MAJ_Signet "Référence_Doc", Modif_RefDoc, Rep2
            MAJ_Signet "Référence_Fabricant", Modif_RefFab, Rep2
            MAJ_Signet "Cas_Emploi", Modif_CasEmp, Rep2
            MAJ_Signet "Nb_Art_stt20", Modif_NbStt, Rep2
            MAJ_Signet "Demandeur", Modif_Dem, Rep2
            MAJ_Signet "Responsable_VS", Modif_RespVal, Rep2

        End With

       'pour enregistrer le doc avec les divers éléments
        WordDoc.Application.ActiveDocument.SaveAs NDF2

        WordApp.Visible = True ' laisse le doc ouvert
        Set WordDoc = Nothing
        Set WordApp = Nothing
    End If

End Sub

La partie intéressante pour la MAJ est la fonction crée exprès pour la MAJ du signet : MAJ_Signet

La fonction en question :

Sub MAJ_Signet(SignetMAJ As String, TexteAmettre As String, Rep As String)
    Dim SignetRange As Range
    Dim WordDoc, WordApp As Object

    Set WordApp = CreateObject("Word.Application")
    Set WordDoc = WordApp.Documents(Rep)
    Set SignetRange = WordDoc.Bookmarks(SignetMAJ).Range

    SignetRange.Text = TexteAmettre
    WordDoc.Bookmarks.Add SignetMAJ, SignetRange

End Sub

Mais elle ne s'exécute pas en entier. Elle s'arrête à l'expression :

Set SignetRange = WordDoc.Bookmarks(SignetMAJ).Range

Des pistes sur cette interruption du code ?

Bonne journée

Bonjour,

Je vais sembler tourner en rond mais pour moi c'est normal étant donné que le signet est supprimé.

À voir si quelqu'un est mieux informé.

Rechercher des sujets similaires à "extraire informations userform mettre word"