XL 2010 création d'un pdf a chaque changement de date

TAOK

XLDnaute Nouveau
Bonjour à tous les pro
dans le fichier joint, onglet mai2022utilisateur, je souhaiterais qu'à chaque changement de date, via le bouton créer pdf, il génère un pdf

j'ai trouvé un code qui fonctionne et me génère bien une feuille sauf que si je change de date, la feuille est vide
C'est normal mais je ne sais pas comment adapté le code
Merci à vous tous

Tao

Sub testimpression()
'
' testimpression Macro
'

Dim Chemin As String
Chemin = ActiveWorkbook.Path


'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Chemin & "\" & Range("A9").Value & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

MsgBox "le pdf a été généré"


End Sub
 

Pièces jointes

  • MAI 2022 test impression.xlsm
    208.9 KB · Affichages: 14
Solution
Bonjour @TAOK

Si tu veux une autre date tu as 2 solutions :

1) Tu vas manuellement dans le code et tu mets par exemple


2) Tu mets la date dans une cellule dédiée par exemple en A3
Regarde la pièce jointe 1136049
ET dans le code tu mets :

Ensuite il te suffira de modifier la date en A3 SANS avoir besoin d'aller dans le code

Les 2 solutions sont indépendantes soit tu choisis la 1ere soit la 2eme solution


@Phil69970
Super Merci
je teste le deuxième solution

job75

XLDnaute Barbatruc
Bonjour TAOK, Phil69970,

Ceci doit être suffisant :
VB:
Sub testimpression()
If Not IsDate([A2] & " " & [A1]) Or IsNumeric([A2]) Then Exit Sub
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & [A2] & " " & [A1] & ".pdf"
MsgBox "le pdf a été généré"
End Sub
A+
 

Phil69970

XLDnaute Barbatruc
Bonjour @TAOK

Si tu veux une autre date tu as 2 solutions :

1) Tu vas manuellement dans le code et tu mets par exemple
Date1 = Range("A44").Value

2) Tu mets la date dans une cellule dédiée par exemple en A3
1649247400357.png

ET dans le code tu mets :
Date1 = Range("A3").Value
Ensuite il te suffira de modifier la date en A3 SANS avoir besoin d'aller dans le code

Les 2 solutions sont indépendantes soit tu choisis la 1ere soit la 2eme solution


@Phil69970
 

TAOK

XLDnaute Nouveau
Bonjour TAOK, Phil69970,

Ceci doit être suffisant :
VB:
Sub testimpression()
If Not IsDate([A2] & " " & [A1]) Or IsNumeric([A2]) Then Exit Sub
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & [A2] & " " & [A1] & ".pdf"
MsgBox "le pdf a été généré"
End Sub
A+
Merci Job
cela fonctionne pour le 1 mai mais si je sélectionne le 2 mai, il génère bien le pdf mais il ne contient que les titres et pas le contenu

merci

le but est de sélectionner les dates via le filtres dates et de générer autant de pdf que de dates sélectionnées

TAOK
 

TAOK

XLDnaute Nouveau
Bonjour @TAOK

Si tu veux une autre date tu as 2 solutions :

1) Tu vas manuellement dans le code et tu mets par exemple


2) Tu mets la date dans une cellule dédiée par exemple en A3
Regarde la pièce jointe 1136049
ET dans le code tu mets :

Ensuite il te suffira de modifier la date en A3 SANS avoir besoin d'aller dans le code

Les 2 solutions sont indépendantes soit tu choisis la 1ere soit la 2eme solution


@Phil69970
Super Merci
je teste le deuxième solution
 

TAOK

XLDnaute Nouveau
Bonjour @TAOK

Si tu veux une autre date tu as 2 solutions :

1) Tu vas manuellement dans le code et tu mets par exemple


2) Tu mets la date dans une cellule dédiée par exemple en A3
Regarde la pièce jointe 1136049
ET dans le code tu mets :

Ensuite il te suffira de modifier la date en A3 SANS avoir besoin d'aller dans le code

Les 2 solutions sont indépendantes soit tu choisis la 1ere soit la 2eme solution


@Phil69970
ok Phil
j'ai testé la deuxième solution qui permettra aux collègues de ne pas aller dans le code
c'est ok mais lorsque je choisit une autre date, le pdf n'affiche que les titres et pas le contenu
je mets le pdf du 1 et du 2/5

Bien merci à toi
 

Pièces jointes

  • lun. 2022-05-02.pdf
    184.3 KB · Affichages: 3
  • dim. 2022-05-01.pdf
    399.2 KB · Affichages: 2

Phil69970

XLDnaute Barbatruc
@TAOK

Je suis étonné que tu mettes ton propre post en résolu car tu n'as rien trouvé du tout .
La logique est de valider la réponse qui correspond à la question que tu as posé, donc soit la réponse de Job soit la mienne mais pas la tienne.
Le but est de montrer qu'une réponse a été trouvée et montrer au forum laquelle correspond à ton problème et donc à ta question.

*Voir autre explication ici ou ici

@Phil69970
 

job75

XLDnaute Barbatruc
Le fil n'est pas terminé car le plus simple est de créer tous les fichiers pdf d'un seul coup.

Voyez le fichier joint et cette macro qui utilise le filtre automatique :
VB:
Sub testimpression()
Dim mois$, dossier$, nf$, dat As Long
mois = [A2] & " " & [A1]
If Not IsDate(mois) Or IsNumeric([A2]) Then Exit Sub
dossier = ThisWorkbook.Path & "\" & mois & "\" 'chemin à adapter au besoin
If Dir(dossier, vbDirectory) = "" Then MkDir dossier 'crée le dossier
Application.ScreenUpdating = False
With [A9].CurrentRegion
    .Parent.PageSetup.PrintArea = .Address 'zone d'impression
    nf = .Cells(2, 1).NumberFormat 'mémorise le format date
    For dat = Application.EoMonth(CDate(mois), 0) To .Cells(2, 1) Step -1
        .Columns(1).NumberFormat = "0"
        .AutoFilter 1, dat 'filtre automatique
        .Columns(1).NumberFormat = nf 'restitue le format date
        .Parent.ExportAsFixedFormat xlTypePDF, dossier & Format(dat, "dd mmm yyyy") & ".pdf"
    Next
End With
MsgBox "Les " & Day(Application.EoMonth(CDate(mois), 0)) & " fichiers pdf de " & mois & " ont été générés"
End Sub
Les fichiers pdf sont stockés dans le dossier du mois créé par la macro.
 

Pièces jointes

  • MAI 2022 test impression (1).xlsm
    184.2 KB · Affichages: 3

TAOK

XLDnaute Nouveau
Le fil n'est pas terminé car le plus simple est de créer tous les fichiers pdf d'un seul coup.

Voyez le fichier joint et cette macro qui utilise le filtre automatique :
VB:
Sub testimpression()
Dim mois$, dossier$, nf$, dat As Long
mois = [A2] & " " & [A1]
If Not IsDate(mois) Or IsNumeric([A2]) Then Exit Sub
dossier = ThisWorkbook.Path & "\" & mois & "\" 'chemin à adapter au besoin
If Dir(dossier, vbDirectory) = "" Then MkDir dossier 'crée le dossier
Application.ScreenUpdating = False
With [A9].CurrentRegion
    .Parent.PageSetup.PrintArea = .Address 'zone d'impression
    nf = .Cells(2, 1).NumberFormat 'mémorise le format date
    For dat = Application.EoMonth(CDate(mois), 0) To .Cells(2, 1) Step -1
        .Columns(1).NumberFormat = "0"
        .AutoFilter 1, dat 'filtre automatique
        .Columns(1).NumberFormat = nf 'restitue le format date
        .Parent.ExportAsFixedFormat xlTypePDF, dossier & Format(dat, "dd mmm yyyy") & ".pdf"
    Next
End With
MsgBox "Les " & Day(Application.EoMonth(CDate(mois), 0)) & " fichiers pdf de " & mois & " ont été générés"
End Sub
Les fichiers pdf sont stockés dans le dossier du mois créé par la macro.
C'est super
testé et nickel
je mettrais deux boutons (bouton 1 macro par jour et boutons 2 macro par mois)

merci bien

TAOK
 

Discussions similaires