Zone d'impression d'une page parmis d'autres

julbute

XLDnaute Junior
Bonjour à tous,
J'aimerai connaitre l'adresse de la zone d'impression d'une page.

J'aimerai imprimer toutes les pages de mon document en .png.
Je me sers de l'expression : .CopyPicture xlPrinter, xlPicture

Je peux connaitre,
la zone d'impression totale : ActiveSheet.PageSetup.PrintArea .Je peux donc en déduire les ligne et colonne
Le nombre de saut de page verticale et horizontale : ActiveSheet.HPageBreaks.Count et
ActiveSheet.VPageBreaks.Count
Le nombre de pages : ActiveSheet.PageSetup.Pages.Count

Avec tous cela il y a surement moyen de trouver toutes les zones des pages du type .Range
J'ai essayé par divers moyen, mais je suis bloqué sur l'assemblage de tout cela, car compliqué.

Je pensais pouvoir utiliser quelques chose comme cela : ActiveSheet.PageSetup.Pages.Item(1).PrintArea
mais cela ne fonctionne pas. Connaissez vous quelque chose qui résoudrait mon interrogation.
Merci à vous
Roger
 

julbute

XLDnaute Junior
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
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87