Lier des information d'un tableau excel a un word

yohan60

XLDnaute Nouveau
Bonjour,

je souhaiterais liée certaines informations d'un tableau à un document word, avec mise à jour automatique après modif sachant q'une ligne est inséré au tableau a chaque nouvelle entrée donc c'est toujours la dernière ligne du tableau correspondent qui serait liée au word sélectionner, les infos du word doivent être liée au colonne du meme non sur le tableau excel.
j'aurais également besoin d'insérer sur le doc word une signature manuscrite automatiquement également.

es-ce fessable, quelq'un peut il m'aider?

a bientot et merci
 

Pièces jointes

  • essai protocole.docm
    15.3 KB · Affichages: 10
  • essai prtocole.xlsm
    68.2 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour yohan60, le forum,

Téléchargez les fichiers joints dans le même dossier (le bureau).

La macro dans la feuille "Acces_journaliers" du fichier .xlsm :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim P As Range, c As Range, chemin$, doc$, Wapp As Object, x$
If Target.Row < 8 Then Exit Sub
Cancel = True
Set P = Intersect(Target.EntireRow, [B:B,E:E,I:I,L:M,O:P])
Set c = P.Find("", P(1, 15), xlValues)
If Not c Is Nothing Then MsgBox "Toutes les cellules jaunes doivent être renseignées": c.Select: Exit Sub
If Not IsDate(P(1)) Then MsgBox "Date incorrecte": P(1).Select: Exit Sub
If Not IsNumeric(P(1, 8)) Then MsgBox "Heure incorrecte": P(1, 8).Select: Exit Sub
chemin = ThisWorkbook.Path & "\" 'à adapter
doc = "Modèle protocole.docx" 'à adapter
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
With Wapp.documents.Open(chemin & doc)
    .Bookmarks("Date").Range = P(1).Text
    .Bookmarks("Société").Range = P(1, 4)
    .Bookmarks("Heure").Range = P(1, 8).Text
    .Bookmarks("Code").Range = P(1, 11)
    .Bookmarks("Nature").Range = P(1, 12)
    .Bookmarks("Type").Range = P(1, 14)
    .Bookmarks("Conditionnement").Range = P(1, 15)
    x = P(1, 4) & Format(CDate(P(1)) + CDbl(P(1, 8)), " yyyy-mm-dd hhmmss") & ".docx"
    Wapp.documents(x).Close False 'si le document Word est ouvert on le ferme
    .SaveAs chemin & x
    If Wapp.documents.Count = 1 Then Wapp.Quit Else .Close False
    MsgBox "Le document '" & x & "' a été créé...", , "Word"
End With
End Sub
Elle s'exécute par double-clic dans le tableau.

A+
 

Pièces jointes

  • essai protocole(1).xlsm
    64.3 KB · Affichages: 4
  • Modèle protocole.docx
    15.5 KB · Affichages: 5
Dernière édition:

yohan60

XLDnaute Nouveau
Bonjour yohan60, le forum,

Téléchargez les fichiers joints dans le même dossier (le bureau).

La macro dans la feuille "Acces_journaliers" du fichier .xlsm :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim P As Range, c As Range, chemin$, doc$, Wapp As Object, x$
If Target.Row < 8 Then Exit Sub
Cancel = True
Set P = Intersect(Target.EntireRow, [B:B,E:E,I:I,L:M,O:P])
Set c = P.Find("", P(1, 15), xlValues)
If Not c Is Nothing Then MsgBox "Toutes les cellules jaunes doivent être renseignées": c.Select: Exit Sub
If Not IsDate(P(1)) Then MsgBox "Date incorrecte": P(1).Select: Exit Sub
If Not IsNumeric(P(1, 8)) Then MsgBox "Heure incorrecte": P(1, 8).Select: Exit Sub
chemin = ThisWorkbook.Path & "\" 'à adapter
doc = "Modèle protocole.docx" 'à adapter
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
With Wapp.documents.Open(chemin & doc)
    .Bookmarks("Date").Range = P(1).Text
    .Bookmarks("Société").Range = P(1, 4)
    .Bookmarks("Heure").Range = P(1, 8).Text
    .Bookmarks("Code").Range = P(1, 11)
    .Bookmarks("Nature").Range = P(1, 12)
    .Bookmarks("Type").Range = P(1, 14)
    .Bookmarks("Conditionnement").Range = P(1, 15)
    x = P(1, 4) & Format(CDate(P(1)) + CDbl(P(1, 8)), " yyyy-mm-dd hhmmss") & ".docx"
    Wapp.documents(x).Close False 'si le document Word est ouvert on le ferme
    .SaveAs chemin & x
    If Wapp.documents.Count = 1 Then Wapp.Quit Else .Close False
    MsgBox "Le document '" & x & "' a été créé...", , "Word"
End With
End Sub
Elle s'exécute par double-clic dans le tableau.

A+
Bonjour,

je te remercie, au lieu d'un double click dans le tableau je souhaiterais cliquer sur un lien qui ouvre une autre page, avec des lien vers les différent doc word car il existe environ 12 protocoles de langues différente, que j'ouvrirais : anglais, allemand etc devra prendre les infos de la dernière ligne.
je ne trouvent pas le document qui est enregistré, et au lieu de le fermer est il possible de l'afficher à l'écran, car il devra être signer sans imprimer.

en te remerciant
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    20.4 KB · Affichages: 12

job75

XLDnaute Barbatruc
Autre solution : il est beaucoup plus simple de rester sur le fichier Excel pour l'édition des protocoles.

Voyez ce fichier (2) et cette macro très simple :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
With ListObjects(1).Range
    i = .Rows.Count
    ThisWorkbook.Names.Add "Date", .Cells(i, 2).Text
    .Cells(i, 5).Name = "Société"
    ThisWorkbook.Names.Add "Heure", "=""" & .Cells(i, 9).Text & """"
    .Cells(i, 12).Name = "Code"
    .Cells(i, 13).Name = "Nature"
    .Cells(i, 15).Name = "Type"
    .Cells(i, 16).Name = "Conditionnement"
    .Interior.ColorIndex = xlNone
    Union(.Cells(i, 2), .Cells(i, 5), .Cells(i, 9), .Cells(i, 12), .Cells(i, 13), .Cells(i, 15), .Cells(i, 16)).Interior.ColorIndex = 6
End With
End Sub
J'ai prévu des boutons pour la création de fichiers PDF mais c'est tout à fait facultatif :
VB:
Sub PDF()
On Error Resume Next
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & _
    ActiveSheet.Name & " " & [Société] & Format(CDate([Date]) + CDate([Heure]), " yyyy-mm-dd hhmmss")
MsgBox IIf(Err, "Echec, voyez les données Date du jour et Heure d'entrée", "PDF créé")
End Sub
 

Pièces jointes

  • essai protocole(2).xlsm
    70.5 KB · Affichages: 16

yohan60

XLDnaute Nouveau
Autre solution : il est beaucoup plus simple de rester sur le fichier Excel pour l'édition des protocoles.

Voyez ce fichier (2) et cette macro très simple :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
With ListObjects(1).Range
    i = .Rows.Count
    ThisWorkbook.Names.Add "Date", .Cells(i, 2).Text
    .Cells(i, 5).Name = "Société"
    ThisWorkbook.Names.Add "Heure", "=""" & .Cells(i, 9).Text & """"
    .Cells(i, 12).Name = "Code"
    .Cells(i, 13).Name = "Nature"
    .Cells(i, 15).Name = "Type"
    .Cells(i, 16).Name = "Conditionnement"
    .Interior.ColorIndex = xlNone
    Union(.Cells(i, 2), .Cells(i, 5), .Cells(i, 9), .Cells(i, 12), .Cells(i, 13), .Cells(i, 15), .Cells(i, 16)).Interior.ColorIndex = 6
End With
End Sub
J'ai prévu des boutons pour la création de fichiers PDF mais c'est tout à fait facultatif :
VB:
Sub PDF()
On Error Resume Next
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & _
    ActiveSheet.Name & " " & [Société] & Format(CDate([Date]) + CDate([Heure]), " yyyy-mm-dd hhmmss")
MsgBox IIf(Err, "Echec, voyez les données Date du jour et Heure d'entrée", "PDF créé")
End Sub
Bonsoir merci encore, je vais prendre cette solution elle sera surement plus simple.
j'ai déja les doc word dans les différente langues.

quand je clique sur le bouton pdf, ou dois-je mettre le chemin pour sauvegarder le document.
merci d'avance

Yohan
 

yohan60

XLDnaute Nouveau
Bonsoir merci encore, je vais prendre cette solution elle sera surement plus simple.
j'ai déja les doc word dans les différente langues.

quand je clique sur le bouton pdf, ou dois-je mettre le chemin pour sauvegarder le document.
merci d'avance

Yohan
Re, bonsoir,

Merci encore du travail que vous avez effectuer, cette solution est plus simple d'utilisation et je vais donc la conservé.
souhaiteriez vous voir le projet final, quand celui-ci sera terminer...
Yohan
 

Discussions similaires

Réponses
5
Affichages
406

Statistiques des forums

Discussions
312 185
Messages
2 086 018
Membres
103 094
dernier inscrit
Molinari