OVH Cloud OVH Cloud

Impression sequentielle VBA

8 réponses
Avatar
J
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****

8 réponses

Avatar
michdenis
Bonjour J@@,

Tu peux essayer ceci :

Je n'ai pas testé cette procédure lors d'impression mais "L'aperçu avant impression" correspond à ta demande !

Évidemment, certains paramètres d'impression ont besoin d'être adapté à ton application comme les marges , en-têtes et
pied de page... etc. ...

Et il ne te reste plus qu'à modifier la commande PrintPreview pour Printout et ses paramètres.

'-----------------------------------
Sub Imprimer()

Dim R As Range

With Worksheets("Feuil1") 'À définir
.Range("A:A").EntireColumn.Hidden = True
.Range("4:38").EntireRow.Hidden = True
.Range("38:38").EntireRow.Hidden = False
With .PageSetup
.LeftHeader = "My Company"
.CenterHeader = ""
.RightHeader = "&D / &T" ' la date et l'heure
.LeftFooter = "Highly Confidential"
.CenterFooter = ""
.RightFooter = "Finance"
.LeftMargin = Application.InchesToPoints(0.54)
.RightMargin = Application.InchesToPoints(0.3)
.TopMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.36)
.HeaderMargin = Application.InchesToPoints(0.22)
.FooterMargin = Application.InchesToPoints(0.17)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
' .PrintQuality = 600 ' does not work with all the printers
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

For Each R In Range("3:37").Rows
R.Hidden = False
.PageSetup.PrintArea = _
.Range("B1:J38").SpecialCells(xlCellTypeVisible).Address
.PageSetup.PrintArea = ""
.PrintPreview
R.Hidden = True
Next
.Range("A:A").EntireColumn.Hidden = False
End With
Set R = Nothing
End Sub
'-----------------------------------


Salutations!



"J@@" a écrit dans le message de news:%23p$
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****
Avatar
J
Bonjour michdenis,
merci pour ta réponse
je fonce tester et je reviens
@+
J@@

michdenis wrote:
Bonjour J@@,

Tu peux essayer ceci :

Je n'ai pas testé cette procédure lors d'impression mais "L'aperçu avant impression" correspond à ta demande !

Évidemment, certains paramètres d'impression ont besoin d'être adapté à ton application comme les marges , en-têtes et
pied de page... etc. ...

Et il ne te reste plus qu'à modifier la commande PrintPreview pour Printout et ses paramètres.

'-----------------------------------
Sub Imprimer()

Dim R As Range

With Worksheets("Feuil1") 'À définir
.Range("A:A").EntireColumn.Hidden = True
.Range("4:38").EntireRow.Hidden = True
.Range("38:38").EntireRow.Hidden = False
With .PageSetup
.LeftHeader = "My Company"
.CenterHeader = ""
.RightHeader = "&D / &T" ' la date et l'heure
.LeftFooter = "Highly Confidential"
.CenterFooter = ""
.RightFooter = "Finance"
.LeftMargin = Application.InchesToPoints(0.54)
.RightMargin = Application.InchesToPoints(0.3)
.TopMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.36)
.HeaderMargin = Application.InchesToPoints(0.22)
.FooterMargin = Application.InchesToPoints(0.17)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
' .PrintQuality = 600 ' does not work with all the printers
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

For Each R In Range("3:37").Rows
R.Hidden = False
.PageSetup.PrintArea = _
.Range("B1:J38").SpecialCells(xlCellTypeVisible).Address
.PageSetup.PrintArea = ""
.PrintPreview
R.Hidden = True
Next
.Range("A:A").EntireColumn.Hidden = False
End With
Set R = Nothing
End Sub
'-----------------------------------


Salutations!



"J@@" a écrit dans le message de news:%23p$
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****




Avatar
michdenis
Attention, il manque un point devant l'objet "RANGE" de cette ligne de code dans la procédure originale !


For Each R In .Range("3:37").Rows


Salutations!




"J@@" a écrit dans le message de news:e$
Bonjour michdenis,
merci pour ta réponse
je fonce tester et je reviens
@+
J@@

michdenis wrote:
Bonjour J@@,

Tu peux essayer ceci :

Je n'ai pas testé cette procédure lors d'impression mais "L'aperçu avant impression" correspond à ta demande !

Évidemment, certains paramètres d'impression ont besoin d'être adapté à ton application comme les marges , en-têtes et
pied de page... etc. ...

Et il ne te reste plus qu'à modifier la commande PrintPreview pour Printout et ses paramètres.

'-----------------------------------
Sub Imprimer()

Dim R As Range

With Worksheets("Feuil1") 'À définir
.Range("A:A").EntireColumn.Hidden = True
.Range("4:38").EntireRow.Hidden = True
.Range("38:38").EntireRow.Hidden = False
With .PageSetup
.LeftHeader = "My Company"
.CenterHeader = ""
.RightHeader = "&D / &T" ' la date et l'heure
.LeftFooter = "Highly Confidential"
.CenterFooter = ""
.RightFooter = "Finance"
.LeftMargin = Application.InchesToPoints(0.54)
.RightMargin = Application.InchesToPoints(0.3)
.TopMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.36)
.HeaderMargin = Application.InchesToPoints(0.22)
.FooterMargin = Application.InchesToPoints(0.17)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
' .PrintQuality = 600 ' does not work with all the printers
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

For Each R In Range("3:37").Rows
R.Hidden = False
.PageSetup.PrintArea = _
.Range("B1:J38").SpecialCells(xlCellTypeVisible).Address
.PageSetup.PrintArea = ""
.PrintPreview
R.Hidden = True
Next
.Range("A:A").EntireColumn.Hidden = False
End With
Set R = Nothing
End Sub
'-----------------------------------


Salutations!



"J@@" a écrit dans le message de news:%23p$
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****




Avatar
J
Rebonjour michdenis
tout est au poil (légère adaptation pour démasquer à la fin et alléger
le .pagesetup)
un grand merci.
j'attaque le week end en forme (pont jusqu'au 29, actuelle "Fête nat",
qui devrait être déplacée au 12/07 bicoze changement de majorité, donc 2
chômés cette année :-)

encore merci
@+
J@@

michdenis wrote:

Bonjour J@@,

Tu peux essayer ceci :

Je n'ai pas testé cette procédure lors d'impression mais "L'aperçu avant impression" correspond à ta demande !

Évidemment, certains paramètres d'impression ont besoin d'être adapté à ton application comme les marges , en-têtes et
pied de page... etc. ...

Et il ne te reste plus qu'à modifier la commande PrintPreview pour Printout et ses paramètres.

'-----------------------------------
Sub Imprimer()

Dim R As Range

With Worksheets("Feuil1") 'À définir
.Range("A:A").EntireColumn.Hidden = True
.Range("4:38").EntireRow.Hidden = True
.Range("38:38").EntireRow.Hidden = False
With .PageSetup
.LeftHeader = "My Company"
.CenterHeader = ""
.RightHeader = "&D / &T" ' la date et l'heure
.LeftFooter = "Highly Confidential"
.CenterFooter = ""
.RightFooter = "Finance"
.LeftMargin = Application.InchesToPoints(0.54)
.RightMargin = Application.InchesToPoints(0.3)
.TopMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.36)
.HeaderMargin = Application.InchesToPoints(0.22)
.FooterMargin = Application.InchesToPoints(0.17)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
' .PrintQuality = 600 ' does not work with all the printers
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

For Each R In Range("3:37").Rows
R.Hidden = False
.PageSetup.PrintArea = _
.Range("B1:J38").SpecialCells(xlCellTypeVisible).Address
.PageSetup.PrintArea = ""
.PrintPreview
R.Hidden = True
Next
.Range("A:A").EntireColumn.Hidden = False
End With
Set R = Nothing
End Sub
'-----------------------------------


Salutations!



"J@@" a écrit dans le message de news:%23p$
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****




Avatar
J
Rebonjour michdenis
tout est au poil (légère adaptation pour démasquer à la fin et alléger
le .pagesetup)
un grand merci.
j'attaque le week end en forme (pont jusqu'au 29, actuelle "Fête nat",
qui devrait être déplacée au 12/07 bicoze changement de majorité, donc 2
chômés cette année :-)

encore merci
@+
J@@

michdenis wrote:

Bonjour J@@,

Tu peux essayer ceci :

Je n'ai pas testé cette procédure lors d'impression mais "L'aperçu avant impression" correspond à ta demande !

Évidemment, certains paramètres d'impression ont besoin d'être adapté à ton application comme les marges , en-têtes et
pied de page... etc. ...

Et il ne te reste plus qu'à modifier la commande PrintPreview pour Printout et ses paramètres.

'-----------------------------------
Sub Imprimer()

Dim R As Range

With Worksheets("Feuil1") 'À définir
.Range("A:A").EntireColumn.Hidden = True
.Range("4:38").EntireRow.Hidden = True
.Range("38:38").EntireRow.Hidden = False
With .PageSetup
.LeftHeader = "My Company"
.CenterHeader = ""
.RightHeader = "&D / &T" ' la date et l'heure
.LeftFooter = "Highly Confidential"
.CenterFooter = ""
.RightFooter = "Finance"
.LeftMargin = Application.InchesToPoints(0.54)
.RightMargin = Application.InchesToPoints(0.3)
.TopMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.36)
.HeaderMargin = Application.InchesToPoints(0.22)
.FooterMargin = Application.InchesToPoints(0.17)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
' .PrintQuality = 600 ' does not work with all the printers
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

For Each R In Range("3:37").Rows
R.Hidden = False
.PageSetup.PrintArea = _
.Range("B1:J38").SpecialCells(xlCellTypeVisible).Address
.PageSetup.PrintArea = ""
.PrintPreview
R.Hidden = True
Next
.Range("A:A").EntireColumn.Hidden = False
End With
Set R = Nothing
End Sub
'-----------------------------------


Salutations!



"J@@" a écrit dans le message de news:%23p$
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****




Avatar
sabatier
1) tu n'es pas obligé de le dire deux fois alors que moi je suis sur le
point d'aller travailler
2) tu ferais bien de profiter de ces ponts pour te perfectionner en VBA,
michel denis en a ras la casquette de devoir te faire tout ton boulot
(enfin, c'est ce qu'il m'a toujours dit...)
allez J@@, bosse un peu au lieu de te prélasser dans l'eau limpide de
quelque lagon des Tubuaï...
jps

J@@ a écrit:
Rebonjour michdenis
j'attaque le week end en forme (pont jusqu'au 29, actuelle "Fête nat",
qui devrait être déplacée au 12/07 bicoze changement de majorité, donc 2
chômés cette année :-)

encore merci
@+
J@@

michdenis wrote:

Bonjour J@@,

Tu peux essayer ceci :

Je n'ai pas testé cette procédure lors d'impression mais "L'aperçu
avant impression" correspond à ta demande !

Évidemment, certains paramètres d'impression ont besoin d'être adapté
à ton application comme les marges , en-têtes et
pied de page... etc. ...

Et il ne te reste plus qu'à modifier la commande PrintPreview pour
Printout et ses paramètres.

'-----------------------------------
Sub Imprimer()

Dim R As Range

With Worksheets("Feuil1") 'À définir
.Range("A:A").EntireColumn.Hidden = True
.Range("4:38").EntireRow.Hidden = True
.Range("38:38").EntireRow.Hidden = False
With .PageSetup
.LeftHeader = "My Company"
.CenterHeader = ""
.RightHeader = "&D / &T" ' la date et l'heure
.LeftFooter = "Highly Confidential"
.CenterFooter = ""
.RightFooter = "Finance"
.LeftMargin = Application.InchesToPoints(0.54)
.RightMargin = Application.InchesToPoints(0.3)
.TopMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.36)
.HeaderMargin = Application.InchesToPoints(0.22)
.FooterMargin = Application.InchesToPoints(0.17)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
' .PrintQuality = 600 ' does not work with all the printers
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

For Each R In Range("3:37").Rows
R.Hidden = False
.PageSetup.PrintArea = _
.Range("B1:J38").SpecialCells(xlCellTypeVisible).Address
.PageSetup.PrintArea = ""
.PrintPreview
R.Hidden = True
Next
.Range("A:A").EntireColumn.Hidden = False
End With
Set R = Nothing
End Sub
'-----------------------------------


Salutations!



"J@@" a écrit dans le message de
news:%23p$
Bonjour à tous (XL2000)
dans la plage B1:J38 d'une feuille j'essaie d'imprimer par VBA
successivement chaque ligne de 3 à 37, en imprimant à chaque fois les
lignes 1, 2 et 38 en plus de la ligne concernée, en début de
l'impression.

J'ai récupéré un bout de code, mais rien ne marche...
Merci pour l'aide
J@@

*****
Sub Impressionsequentielle()
Dim Sht, zoneImpr
zoneImpr = InputBox("entrer la zone d'impression", "Zone d'impression")
With Sht

.PageSetup.PrintArea = zoneImpr
' .PrintOut
.PrintPreview
End With
End Sub
*****






Avatar
J
Bonjour JPS
allez J@@, bosse un peu au lieu de te prélasser dans l'eau limpide de
quelque lagon des Tubuaï...
:-)))

fait pas chaud à Tubuai en ce moment, et même chez moi, ça craint 20°C à
l'heure du déjeuner, brrrr, c'est le maraamu qui veut ça.
Alors que dans 2 semaines je fais "tour escort", ma grande
reconnaissante ramenant 4 copines de ta région pour 3 semaines. Je pense
qu'elle vienne dans notre hiver pour échapper à votre canicule...
(j'ai bien aimé ta nouvelle adresse ;-)
@+
J@@

Avatar
sabatier
heu...un JPS déguisé en 5ème copine, ça se remarquerait, J@@?
jps

J@@ a écrit:
Alors que dans 2 semaines je fais "tour escort", ma grande
reconnaissante ramenant 4 copines de ta région pour 3 semaines. Je pense
qu'elle vienne dans notre hiver pour échapper à votre canicule...
(j'ai bien aimé ta nouvelle adresse ;-)
@+
J@@