Etat de sortie sur Word a partir d'une base Excel

Bonjour a tous,

voila, j'ai une base de données des employés sous Excel 2021 et j'aimerais obtenir un document word qui m'affiche la liste des employés selon la fac ou ils travails

cette fois je me suis cassé la tête et donc j'ai pondu le code suivant qui fait le gros du travail.

seul souci est il m'affiche qu'un seul employé au lieu de 10. je n'arrive pas savoir où mettre la boucle pour qu'il m'affiche les 10 employés a la suite

voila le code:

Sub sendWord()

Dim wd As Word.Application
Dim wddoc As Word.Document
Set wd = New Word.Application  ' création du document word

Dim FrRow, LastRow As Long
LastRow = 7 'Feuil1.Range("A" & Rows.Count).End(xlUp).Row

For FrRow = 3 To LastRow
    Set wddoc = wd.Documents.Open(ThisWorkbook.Path & "\borderauxfac.docx")
    wd.Visible = False

' Transfere de données
    wd.Selection.GoTo what:=wdGoToBookmark, Name:="StructureName" ' (doyen, recteur,...)
    wd.Selection.TypeText Text:=Feuil1.Cells(FrRow, "N")
    wd.Selection.GoTo what:=wdGoToBookmark, Name:="Faculte" ' nom de la faculté
    wd.Selection.TypeText Text:=Feuil1.Cells(FrRow, "O")
    wd.Selection.GoTo what:=wdGoToBookmark, Name:="NomATS" ' nom des employés
    wd.Selection.TypeText Text:=Feuil1.Cells(FrRow, "B")

' Effacer les Signets en cas d'erreur
    On Error Resume Next
    wddoc.Bookmarks("StructureName").Delete
    wddoc.Bookmarks("Faculte").Delete

'sauvegarde du document
    wddoc.SaveAs2 ThisWorkbook.Path & "\" & Feuil1.Cells(FrRow, "O").Value & ".docx"
    wddoc.Close
    Set wddoc = Nothing

Next FrRow

    MsgBox "Vos fichiers ont été Sauvegardés avec succès", vbInformation + vbMsgBoxRight + vbMsgBoxRtlReading, "Confirmation"

End Sub

voici un exemple de résultat bien sur simplifier :

sans titre

Hello,

Il te faut la liste des facultés (sans doublons).
Tu boucles sur cette liste puis tu boucles sur ton tableau, ettu fais un test sur la colonne faculté (si liste faculté = colonne faculté alors tu ajoute l'employé)
Il te faudra également concaténer les employé via un séparateur. Un saut de ligne si tu veux les avoirs les uns en dessous des autres)

merci pour votre reponse rapide, voila mon ficher est une table de 1800 employés avec les renseignement necessaires (nom, date naissance, grade, fac,...etc), trillé par employés.

si je suis votre resonnement je deverais creer une autre table et donc avoir 2 beses de travail, et ce n'est le but.

mais c'est vrais qu'il faut faire des saut de lignes et pour ca je pense utilisser la fonction "array" pour strocker les noms a la suite puos les afficher, il fait que je trouve comment.

et ce n'est le but.

si vous savez faire avec une table dans une feuille pourquoi ne pas le faire ?

C'est mieux de commencer avec une méthode que l'on connais et voir ce que ça donne, que de perdre du temps avec une méthode que l'on ne connais pas.

Dans un second temps, pourquoi pas effectivement optimiser et utiliser un array.

le fichier final est destiné à un autre employé, donc j'aimerais simplifier et optimiser le travail et franchement je n'est pas envie de créer un autre feuille excel et alourdir le fichier voila pourquoi;

sinon il faut changer la valeur de la variable "LastRow" dans le codes que j'ai oublier de changer après le teste :

au lieu de LastRow = 7

c'est: LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row --- comme ca il parcourra toute la base

j'ai joint deux fichiers échantillons qui doivent être dans le même dossier et ajouter un bouton "send to word" un peut grossier afin d'exécuter la marco directement, ca peut toujours aider

merci.

9test.xlsm (35.14 Ko)
10borderauxfac.docx (17.84 Ko)
Rechercher des sujets similaires à "etat sortie word partir base"