Re : Zone d'impression d'une page parmis d'autres
Bonsoir , bonjour à tous
Mon problème reste entier je n'avance pas sur la solution.
Dans l'aide d'excel sur : Pages.Propriété Item je trouve la syntaxe : expression.Item(Index)
Mais je n'arrive pas à faire fonctionner.
Avez vous une(des) idée(s) sur comment faire?
La piste que j'ai pris me parait fort compliqué.
Merci de votre aide
Roger
voici la piste sur laquelle je suis partie, mais n'étant pas expert en VBA. Cela est SUREMENT Perfectible...
Mais cela coince pour remplir le tableau export et le lire.
Dim Export()
Dim A As Long
Dim B As Long
Dim C As Long
Dim D As Long
Sub Exportpng()
Dim Plage As Range
Dim Position As Range
Dim ZoneH As Long
Dim ZoneV As Long
Dim Zone As String
Dim Zone1 As String
Dim Zone2 As String
Dim Zonepages As String
Dim PreL As Long
Dim DerL As Long
Dim PreC As Long
Dim DerC As Long
Dim CptH As Long
Dim CptV As Long
Dim CptT As Long
Dim Cptadr As Range
CptH = 0
CptV = 0
CptT = 0
'connaitre la zone d'impression
Zone = ActiveSheet.PageSetup.PrintArea
Debug.Print Zone
'déduire la première ligne, la dernière ligne la première colonne la dernière colonne
Zone1 = (Left(Zone, (InStr(Zone, ":")) - 1))
Zone2 = (Right(Zone, (InStr(Zone, ":")) + 1))
Debug.Print "Zone1 : " & Zone1
Debug.Print "Zone2 : " & Zone2
PreL = Range(Zone1).Row 'première ligne
PreC = Range(Zone1).Column 'première colonne
DerL = Range(Zone2).Row 'dernière ligne
DerC = Range(Zone2).Column 'dernière colonne
Debug.Print "première ligne : " & PreL
Debug.Print "première colonne : " & PreC
Debug.Print "dernière ligne : " & DerL
Debug.Print "dernière colonne : " & DerC
'connaitre le nombre de saut de page
CptH = ActiveSheet.HPageBreaks.Count
CptV = ActiveSheet.VPageBreaks.Count
'définir le nombre de page à exporter
CptT = ActiveSheet.PageSetup.Pages.Count ' nombre total de page
' dimensionne le tableau Ligne pre,colonne pre,Ligne der, colonne der
ReDim Export(CptT, 2)
Export(1, 0) = PreL
Export(1, 2) = PreC
Export(CptT, 0) = DerL
Export(CptT, 1) = DerC
Debug.Print "nombre total de zone : " & CptT
Debug.Print "nombre de saut H :" & CptH
Debug.Print "nombre de saut V :" & CptV
' position des sauts de page
If CptH > 1 Then
RemExport
C = ActiveSheet.HPageBreaks(CptH).Location.Row 'Pour test
Debug.Print "ligne:" & D
Else
C = PreC
Debug.Print "ligne:" & D
End If
If CptV > 1 Then
RemExport
D = ActiveSheet.VPageBreaks(CptV).Location.Column 'Pour test
Debug.Print "Colonne:" & D
Else
D = DerC
Debug.Print "Colonne:" & D
End If
A = PreL
B = PreC
ImprPng
End Sub
Sub ImprPng()
' code pris sur forum
'Set Plage = ActiveSheet.Range(Cells(PreL, PreC), Cells(Ligne, Colonne))
'Set Plage = ActiveSheet.Range("B1:H14")
Set Plage = ActiveSheet.Range(Cells(A, B), Cells(C, D))
Application.ScreenUpdating = False
Workbooks.Add ' ouvre un nouveau classeur
Plage.CopyPicture xlPrinter, xlPicture
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height).Chart
.Paste
.Export "C:\Users\CAO\Desktop\Perso\Test.png", "png"
End With
ActiveWorkbook.Close False 'ferme le classeur créer
Application.ScreenUpdating = True
End Sub
Sub RemExport()
' Remplir ici le tableau Export
Debug.Print "CptH ou CptV supérieur à 1"
End Sub