XL 2016 Générer un rapport pdf depuis excel

fraux

XLDnaute Nouveau
Bonjour, j’aurai besoin de votre aide.
Je souhaiterai créer un tableau excel avec les colonnes suivantes (Date, heure, adresse, Infraction, Code Natinf, Vehicule : marque, modèle, immatriculation, Operateur, N°de rapport).
Au bout de chaque ligne, un onglet qui permette de générer automatiquement un rapport (à partir d'un document word) avec insertion des champs ci-dessus.
Ci-joint modèle du rapport en word que j’aimerai générer (bien sûr il faut que je puisse le modifier avant) et modèle du tableau excel.
Il faut éditer un rapport word par ligne de sorte à ce que nous puissions imprimer le publipostage en fin de chaque journée (uniquement les rapports du jour). Si par chance, il pouvait être directement générer en pdf, ce serait top. Par contre il faudrait qu’avant (ou de temps en temps) je puisse modifier mon fichier word.
Est-ce que cela est possible ?
Merci énormément de votre aide.
Cordialement,
 

Pièces jointes

  • tableau de saisie.xlsx
    16.5 KB · Affichages: 18
  • rapport a generer en pdf.docx
    15.7 KB · Affichages: 20

fraux

XLDnaute Nouveau
Bonjour Phil69970,

Tout fonctionne parfaitement. Merci beaucoup.
Cependant, je m'aperçois que dans le pdf, juste après la date d'infaction, et avant l'adresse, l'heure d'infraction n'apparait pas. Il s'agirait de l'horaire qui apparait en colonne B.
Serait-il possible de l'ajouter svp ? Ou sinon comment faire ?
Merci beaucoup.
Cordialement
 

Pièces jointes

  • PDF et tableau de saisie et TS V2 (1).xlsm
    45 KB · Affichages: 14

fraux

XLDnaute Nouveau
Bonjour Phil69970,

Tout fonctionne parfaitement. J'aurai juste besoin de faire apparaitre l'heure de constatation (qui est en colonne B) à côté de la date (carré jaune au dessus de "Marque") et juste avant la rue.
Comment faire ?
Encore un grand merci pour votre aide précieuse.
Cordialement
 

Pièces jointes

  • PDF et tableau de saisie et TS V2 (1).xlsm
    45.4 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonsoir fraux, le fil,

J'interviens en l'absence de Phil69970, il suffit de modifier B17 :
VB:
            Ws2.Range("B17") = "Le " & Format(.ListColumns(1).DataBodyRange(i) + .ListColumns(2).DataBodyRange(i), "dddd d mmmm yyyy à hh:mm") & _
                ", " & .ListColumns(3).DataBodyRange(i) & " " & .ListColumns(4).DataBodyRange(i) & " " & .ListColumns(5).DataBodyRange(i) & " le véhicule : "
J'ai modifié aussi la formule en B4 :
Code:
="Le " & TEXTE(MAINTENANT();"jj mmmm aaaa \à hh:mm")
A+
 

Pièces jointes

  • PDF et tableau de saisie et TS V2 (1).xlsm
    40.6 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour le forum,

Perso je préfère utiliser le Range du tableau plutôt que le DataBodyRange :
VB:
Sub Puplipostage()
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim LoR As Range, i&, Cptr&

Set Ws1 = Worksheets("Feuil1")
Set Ws2 = Worksheets("Publipostage")
Set LoR = Ws1.ListObjects(1).Range

Application.ScreenUpdating = False
For i = 2 To LoR.Rows.Count
    If LoR(i, 13) = "A faire" Then
        Ws2.Range("B8,B17,C18:C20,B24,B26").Interior.ColorIndex = xlNone
        Select Case LoR(i, 12)
            Case "PM"
                Ws2.Range("B8") = Ws2.Range("H5") & LoR(i, 11) & Ws2.Range("H9")
            Case "ASVP"
                Ws2.Range("B8") = Ws2.Range("H5") & LoR(i, 11) & Ws2.Range("H12")
            Case Else                'Si besoin on rajoute des case.....
                Ws2.Range("B8") = Ws2.Range("H5") & LoR(i, 11) & Ws2.Range("H15")
        End Select
        Ws2.Range("B17") = "Le " & Format(LoR(i, 1) + LoR(i, 2), "dddd d mmmm yyyy à hh:mm") & _
            ", " & LoR(i, 3) & " " & LoR(i, 4) & " " & LoR(i, 5) & " le véhicule : "
        Ws2.Range("C18:C20") = Application.Transpose(LoR(i, 8).Resize(, 3))
        Ws2.Range("B24") = LoR(i, 7)
        Ws2.Range("B26") = "Cette infraction a pu être relevée au moyen de la caméra " & _
            LoR(i, 6) & ", et a fait l’objet d’une verbalisation par procès-verbal électronique."
        LoR(i, 13) = "Fait"

        '*********** PDF
        With Ws2.PageSetup
            .PrintArea = "$A$1:$F$52" 'Plage à imprimer
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        Ws2.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & LoR(i, 10) & ".pdf" 'Nomn du PDF ==> Immatriculation de la voiture
        '***********
        Cptr = Cptr + 1
    End If
Next i

'***** RAZ de la feuille publipostage
Ws2.Range("B8,B17,C18:C20,B24,B26") = ""
Ws2.Range("B8,B17,C18:C20,B24,B26").Interior.Color = vbYellow
'*****
MsgBox "Nombre de PDF créé : " & Cptr, vbInformation, "Création PDF"
End Sub
Nota : chez moi sur Win 11 Excel 2019, lors de la 1ère exécution, la macro prend pas mal de temps, est-ce la même chose chez vous ? Je ne suis pas arrivé à comprendre pourquoi.

A+
 

Pièces jointes

  • PDF et tableau de saisie et TS V2 (2).xlsm
    42.8 KB · Affichages: 7

Statistiques des forums

Discussions
315 080
Messages
2 116 003
Membres
112 636
dernier inscrit
fred 1969