Générer plusieurs fichiers sur la base d'un modèle

Bonjour,

Je suis à la recherche de comment faire pour réaliser la démarche suivante. Je l'ai déjà vu, je sais que c'est possible maintenant je ne sais pas comment. J'espère que l'un d'entre vous peut m'aider.

Situation:

Chaque année, je dois préparer des formulaires pour des entretiens annuels avec des collaborateurs. Je souhaite générer, sur la base d'un modèle d'entretien vierge (au format excel), un fichier par collaborateur. Ensuite, dans ce fichier je souhaite faire apparaitre les objectifs fixés lors de l'entretien de l'année précédente. Les objectifs sont enregistrés dans un fichier (individuel par collaborateur) dans un dossier sur le serveur. Aujourd'hui, tout est fait en Word, je fais des copier coller par collaborateur pour préparer les nouveaux fichiers. C'est un peu un travail de singe et une perte de temps. Quelles sont les formules ou fonction? Faut-il plutôt faire une Macro?

But

Pouvoir générer automatiquement sous excel un nouveau fichier par collaborateur avec les objectifs de l'année précédente.

Merci pour vos pistes et votre aide!!

Bonjour

Il y a plusieurs solutions.

Si le formulaire est bien créé dans Word sous forme de formulaire (déclaré comme tel et différenciant libellés/intitulés et champs de saisie) il est possible de réenregistrer l’ensemble des fiches remplies sous forme de fichiers de données ne contenant que les réponses.

Ceci par un macro pltôt qu'à la main.

Ensuite par VBA ou par PowerQuery (intégré à 2016) on peut fusionner toutes les réponses dans une même table exploitable ensuite normalement.

On peut aussi prévoir un formulaire par Excel dont les données saisies sont répercutées sur une ligne de tableau (autre onglet) puis retraiter tous ces tableaux des fichiers Excel par VBA ou par PowerQuery.

Bonjour

Il y a plusieurs solutions.

Si le formulaire est bien créé dans Word sous forme de formulaire (déclaré comme tel et différenciant libellés/intitulés et champs de saisie) il est possible de réenregistrer l’ensemble des fiches remplies sous forme de fichiers de données ne contenant que les réponses.

Ceci par un macro pltôt qu'à la main.

Ensuite par VBA ou par PowerQuery (intégré à 2016) on peut fusionner toutes les réponses dans une même table exploitable ensuite normalement.

On peut aussi prévoir un formulaire par Excel dont les données saisies sont répercutées sur une ligne de tableau (autre onglet) puis retraiter tous ces tableaux des fichiers Excel par VBA ou par PowerQuery.

Bonjour,

Donc, concrètement si je choisi la première variante et que mon formulaire est prêt, quelle est la manœuvre pour réaliser le fichier de donnée et les fusionner dans un même table?

Merci beaucoup et à bientôt

RE

Dans Word il y avait une option d'enregistrement des formulaires en données seules mais semble avoir disparu depuis 2007...

Pas grave j'ai trouvé plus simple sous réserve que tous les champs des formulaires aient bien des noms.

Stoker tous les formulaires remplis dans un dossier

Y stocker un document Excel avec une ligne avec les titres des champs à récupérer

Dans un autre classeur Excel créer un bouton et y associer le code suivant (adapter les trois variables et cocher la référence Scripting Runtime)

Option Explicit
Sub RecupFormulaires

    Dim oFSO As New FileSystemObject
    Dim oFil As File
    Dim oFold As Folder
    Dim wApp As Word.Application
    Dim oDoc As Word.Document
    Dim Compteur As Integer
    Dim WBouvert As Boolean
    Dim WB As Workbook

    Dim Dossier as string
    Dim Classeur as string
    Dim Onglet as string

    Dossier="E:\Formulaires\"
    Classeur="Consolidation"
    Onglet="Dépouillement"

    Set oFold = oFSO.GetFolder(Dossier)
    For Each WB In Workbooks
        If WB.Name =Classeur Then WBouvert = True: Exit For
    Next WB

    If WBouvert <> True Then Workbooks.Open (oFold & "\" & Classeur): Set WB = ActiveWorkbook
    WB.Worksheets(Onglet).Activate
    Compteur = 0
    Set wApp = CreateObject("Word.Application")

    'wApp.Visible = True

    For Each oFil In oFold.Files
        If Right(oFil.Name, 4) = "docx" Then
        Compteur = Compteur + 1
        Set oDoc = wApp.Documents.Open(Filename:=oFold & "\" & oFil.Name)
            Call Extract(oDoc, Compteur + 1)
            Set oDoc = Nothing
        End If
    Next oFil

    wApp.Quit
    Set oFSO = Nothing

End Sub
Public Function Extract(oDoc As Object, Compte As Integer)
    On Error Resume Next
    Dim i, k, j As Integer
    Dim resp

    oDoc.Unprotect

    'Objets de formulaires
    'La propriété Name est le nom : pourrait être utilisé pour repérer la colonne Excel
    i = oDoc.FormFields.Count

    For j = 1 To i
        ActiveSheet.Cells(Compte, j).Value = oDoc.FormFields(j).Result
    Next j

    k = j - 1
    'Contrôles ActiveX
    'La propriété OLEFormat.Object.Name est le nom : pourrait être utilisé pour repérer la colonne Excel
    i = oDoc.InlineShapes.Count
    For j = 1 To i
        ActiveSheet.Cells(Compte, j + k).Value = oDoc.InlineShapes(j).OLEFormat.Object
    Next j

    k = k + j - 1
    'Contrôles de Contenu
    'La propriété Tag est le nom : pourrait être utilisé pour repérer la colonne Excel
    i = oDoc.ContentControls.Count

    For j = 1 To i
        ActiveSheet.Cells(Compte, j + k).Value = oDoc.ContentControls(j).Range
    Next j

    ActiveSheet.Cells(Compte, k + j) = oDoc.Name
    ActiveSheet.Columns.Update
    oDoc.Close SaveChanges:=False

End Function

On peut l'adapter pour mettre le code dans le classeur de récupération, comparer les noms des champs Word aux titres pour que tous champs vide ne décale pas...

Rechercher des sujets similaires à "generer fichiers base modele"