Je travaille sur Excel pour Mac, Office 365
Bonjour,
Je suis depuis 2 jours sur un problème d'export que je n'arrive pas à résoudre..
Le but est d'exporter une feuille Excel en "pdf" , feuille qui contient les séries d'une compétition en piscine
Tout se passe très bien tant que l'export n'a pas lieu, c'est à dire que la feuille est formatée comme il faut, que les sauts de page sont là où il faut etc...
Si je fais "manuellement" Fichier --> imprimer --> PDF --> Ouvrir dans Aperçu, c'est parfait.
Par contre, dans la macro à partir de la ligne :
.ExportAsFixedFormat _
etc., tout le formatage est perdu, c'est à dire qu'il me sort 20 pages au lieu de 5 !
Voici le code complet :
Sub impressionseriesCombine()
ActiveSheet.ResetAllPageBreaks
' Declaration des variables
Dim nblignesbassin As Integer, nbseries As Integer, comp As Integer, break As Integer
Dim Repertoire As String, Fichier As String, impseries As String
'Initialisation des variables
nblignesbassin = Application.VLookup(Range("B2"), Sheets("Infos").Range("I7:M16"), 5, False)
nbseries = Application.WorksheetFunction.Count(Range("C4:C303"))
comp = nbseries * (nblignesbassin * 2)
Repertoire = ThisWorkbook.Path & Application.PathSeparator & "Séries" & Application.PathSeparator
Fichier = Repertoire & "Series_" & ActiveSheet.Name & ".pdf"
Select Case nblignesbassin
Case Is = 2
break = 60
Case Is = 3
break = 60
Case Is = 4
break = 56
End Select
'Mise en forme
With ActiveSheet
If comp <= 68 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 68 And comp <= 128 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 128 And comp <= 188 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
.Rows(break * 3 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 183 And comp <= 248 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
.Rows(break * 3 + 4).PageBreak = xlPageBreakManual
.Rows(break * 4 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 248 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
.Rows(break * 3 + 4).PageBreak = xlPageBreakManual
.Rows(break * 4 + 4).PageBreak = xlPageBreakManual
.Rows(break * 5 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells(303, 9)).Address
End If
With .PageSetup
.Orientation = xlPortrait
.Zoom = 72
.LeftMargin = Application.CentimetersToPoints(0.5)
.RightMargin = Application.CentimetersToPoints(0.5)
.TopMargin = Application.CentimetersToPoints(3#)
.BottomMargin = Application.CentimetersToPoints(0)
.HeaderMargin = Application.CentimetersToPoints(0.5)
.CenterHorizontally = True
.FitToPagesWide = 1
.LeftFooter = "&""calibri""&12" & "Edition au : " & Format(Now, "DD/MM/YYYY HH:MM")
.PrintTitleRows = "$1:$3"
.PrintArea = impseries
End With
'C'est à partir de là que tout se complique!!!
.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=Fichier, _
Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
End Sub
Si quelqu'un aurait une idée, pour le moment j'ai un peu tout essayé sans trouver la solution
Merci d'avance
Bonne journée
Bonjour,
Je suis depuis 2 jours sur un problème d'export que je n'arrive pas à résoudre..
Le but est d'exporter une feuille Excel en "pdf" , feuille qui contient les séries d'une compétition en piscine
Tout se passe très bien tant que l'export n'a pas lieu, c'est à dire que la feuille est formatée comme il faut, que les sauts de page sont là où il faut etc...
Si je fais "manuellement" Fichier --> imprimer --> PDF --> Ouvrir dans Aperçu, c'est parfait.
Par contre, dans la macro à partir de la ligne :
.ExportAsFixedFormat _
etc., tout le formatage est perdu, c'est à dire qu'il me sort 20 pages au lieu de 5 !
Voici le code complet :
Sub impressionseriesCombine()
ActiveSheet.ResetAllPageBreaks
' Declaration des variables
Dim nblignesbassin As Integer, nbseries As Integer, comp As Integer, break As Integer
Dim Repertoire As String, Fichier As String, impseries As String
'Initialisation des variables
nblignesbassin = Application.VLookup(Range("B2"), Sheets("Infos").Range("I7:M16"), 5, False)
nbseries = Application.WorksheetFunction.Count(Range("C4:C303"))
comp = nbseries * (nblignesbassin * 2)
Repertoire = ThisWorkbook.Path & Application.PathSeparator & "Séries" & Application.PathSeparator
Fichier = Repertoire & "Series_" & ActiveSheet.Name & ".pdf"
Select Case nblignesbassin
Case Is = 2
break = 60
Case Is = 3
break = 60
Case Is = 4
break = 56
End Select
'Mise en forme
With ActiveSheet
If comp <= 68 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 68 And comp <= 128 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 128 And comp <= 188 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
.Rows(break * 3 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 183 And comp <= 248 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
.Rows(break * 3 + 4).PageBreak = xlPageBreakManual
.Rows(break * 4 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells((comp + 3), 9)).Address
ElseIf comp > 248 Then
.Rows(break + 4).PageBreak = xlPageBreakManual
.Rows(break * 2 + 4).PageBreak = xlPageBreakManual
.Rows(break * 3 + 4).PageBreak = xlPageBreakManual
.Rows(break * 4 + 4).PageBreak = xlPageBreakManual
.Rows(break * 5 + 4).PageBreak = xlPageBreakManual
impseries = Range(Cells(1, 2), Cells(303, 9)).Address
End If
With .PageSetup
.Orientation = xlPortrait
.Zoom = 72
.LeftMargin = Application.CentimetersToPoints(0.5)
.RightMargin = Application.CentimetersToPoints(0.5)
.TopMargin = Application.CentimetersToPoints(3#)
.BottomMargin = Application.CentimetersToPoints(0)
.HeaderMargin = Application.CentimetersToPoints(0.5)
.CenterHorizontally = True
.FitToPagesWide = 1
.LeftFooter = "&""calibri""&12" & "Edition au : " & Format(Now, "DD/MM/YYYY HH:MM")
.PrintTitleRows = "$1:$3"
.PrintArea = impseries
End With
'C'est à partir de là que tout se complique!!!
.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=Fichier, _
Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
End Sub
Si quelqu'un aurait une idée, pour le moment j'ai un peu tout essayé sans trouver la solution
Merci d'avance
Bonne journée