Bonjour tout le monde,
Je précise que je suis un vrai novice en programmation .. merci d'avance de votre indulgence et patience.
Je réalise un tableau de bord et je touche presque au but, mais je sèche sur un problème d'actualisation d'une fiche Excel avant d'imprimer.
Je souhaite imprimer plusieurs pages Excel en format PDF qui en fonction d'une cellule affiche des valeurs différentes sur la page.
Mon problème : quand j'imprime plusieurs pages en fonction d'une liste, ma troisième page n'est jamais à jour alors que les pages qui suivent elles le sont.
Ma question : qu'est-ce que je dois modifier dans mon code ci-dessous pour forcer une mise à jour de la page après la sélection la cellule lorsque j'entre dans ma boucle FOR ?
D'avance, je vous remercie beaucoup de votre aide et j'espère avoir été clair dans mon explication.
Meilleures salutations
Nibor
Code :
Sub imprimSelec()
'
' Imprimer toutes les feuilles des calibres sélectionnés en un seul fichier PDF Macro
'
Dim i As Integer
Dim wbdest As Workbook
Dim wbsource As Workbook
'nom du fichier pdf
nom_fichier = "\" & Sheets("Page de titre").[A2] & "_" & Sheets("SELECTION_DATES").[H5] & "_" & Sheets("Synthese").[AA2] & "_" & Sheets("SELECTION_DATES").[H6]
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
' mettre à jour la page Excel
Call Module1.MàJ
' Première page à imprimer = page de titre
Set wbsource = ActiveWorkbook
Sheets("Page de titre").Copy
' Deuxième page à imprimer = page Excel affichée
Set wbdest = ActiveWorkbook
Feuil1.Copy After:=wbdest.Sheets(wbdest.Sheets.Count)
' Suite des pages à imprimer (mon problème commence ici .. ma première page n'est jamais à jour)
For i = 6 To Feuil1.Range("AA35").End(xlUp).Row
Feuil1.Range("A1") = Feuil1.Range("AA" & i).Value
' mettre à jour la page Excel malgré cela, la feuille ne se met pas totalement à jour
Call Module1.MàJ
Application.Wait Now + TimeValue("0:00:02")
Feuil1.Copy After:=wbdest.Sheets(wbdest.Sheets.Count)
ActiveSheet.Name = "fiche" & i - 6
ActiveSheet.Range("A1:V80") = wbsource.Sheets("Synthese").Range("A1:V80").Value
wbsource.Activate
Next
wbdest.Activate
'enregistrement au format pdf
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=wbsource.Path & nom_fichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True ' sauvegarde du fichier au format pdf
'fermeture du fichier temporaire sans enregistrement
ActiveWorkbook.Close False
End Sub
Je précise que je suis un vrai novice en programmation .. merci d'avance de votre indulgence et patience.
Je réalise un tableau de bord et je touche presque au but, mais je sèche sur un problème d'actualisation d'une fiche Excel avant d'imprimer.
Je souhaite imprimer plusieurs pages Excel en format PDF qui en fonction d'une cellule affiche des valeurs différentes sur la page.
Mon problème : quand j'imprime plusieurs pages en fonction d'une liste, ma troisième page n'est jamais à jour alors que les pages qui suivent elles le sont.
Ma question : qu'est-ce que je dois modifier dans mon code ci-dessous pour forcer une mise à jour de la page après la sélection la cellule lorsque j'entre dans ma boucle FOR ?
D'avance, je vous remercie beaucoup de votre aide et j'espère avoir été clair dans mon explication.
Meilleures salutations
Nibor
Code :
Sub imprimSelec()
'
' Imprimer toutes les feuilles des calibres sélectionnés en un seul fichier PDF Macro
'
Dim i As Integer
Dim wbdest As Workbook
Dim wbsource As Workbook
'nom du fichier pdf
nom_fichier = "\" & Sheets("Page de titre").[A2] & "_" & Sheets("SELECTION_DATES").[H5] & "_" & Sheets("Synthese").[AA2] & "_" & Sheets("SELECTION_DATES").[H6]
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
' mettre à jour la page Excel
Call Module1.MàJ
' Première page à imprimer = page de titre
Set wbsource = ActiveWorkbook
Sheets("Page de titre").Copy
' Deuxième page à imprimer = page Excel affichée
Set wbdest = ActiveWorkbook
Feuil1.Copy After:=wbdest.Sheets(wbdest.Sheets.Count)
' Suite des pages à imprimer (mon problème commence ici .. ma première page n'est jamais à jour)
For i = 6 To Feuil1.Range("AA35").End(xlUp).Row
Feuil1.Range("A1") = Feuil1.Range("AA" & i).Value
' mettre à jour la page Excel malgré cela, la feuille ne se met pas totalement à jour
Call Module1.MàJ
Application.Wait Now + TimeValue("0:00:02")
Feuil1.Copy After:=wbdest.Sheets(wbdest.Sheets.Count)
ActiveSheet.Name = "fiche" & i - 6
ActiveSheet.Range("A1:V80") = wbsource.Sheets("Synthese").Range("A1:V80").Value
wbsource.Activate
Next
wbdest.Activate
'enregistrement au format pdf
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=wbsource.Path & nom_fichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True ' sauvegarde du fichier au format pdf
'fermeture du fichier temporaire sans enregistrement
ActiveWorkbook.Close False
End Sub