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 Subvoici un exemple de résultat bien sur simplifier :
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.