Problème avec l'impression recto - verso 16/01/2004

Le
CHTIOUI
Bonjour
En utilisant une macro sur Word XP qui permet l'impression
en recto-Verso avec un format livret.
Quand j'excute la macro la premire fois, l'imprimante
sorte des pages blanches pour les pages paires du document,
alors qu'elle imprime les pages impaires.
Quand je rexcute la macro une deusime fois, le document
est imprim normalement ( recto-verso en mode livret )
Voici le code de la procdure :

Public Sub Livretv1()
' Macro enregistre le 11/11/2003 par * * *
' imprime le document sous forme de livret
' pour imprimante imprimant les pages dans l'ordre inverse
' imprimante inverse : l'ordre des pages de la pile finale
est invers
' utilise les fonctions zoom de l'impression WORD
Dim NbPages, NbFeuilles, i, Rep, delta As Integer
Dim CouplePage As String
NbPages = ActiveDocument.BuiltInDocumentProperties
(wdPropertyPages)
NbFeuilles = Int((NbPages + 3) / 4)
If NbFeuilles * 4 <> NbPages Then
delta = NbFeuilles * 4 - NbPages
Selection.EndKey Unit:=wdStory
For i = 0 To delta - 1
Selection.InsertBreak Type:=wdPageBreak
Next i
NbPages = NbPages + delta
End If
Rep = MsgBox("Impression recto-verso de " & _
NbFeuilles & " pages ?", vbYesNo, "Livret")
If Rep = vbYes Then
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = CouplePage + Str((4 *
NbFeuilles) - (2 * i)) & ";" & Str(2 * i + 1)
If i < NbFeuilles - 1 Then
CouplePage = CouplePage & ";"
End If
Next i
Impr2pages (CouplePage)
Rep = MsgBox(" retourner les feuilles et appuyer
sur OK", vbOKOnly)
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = CouplePage + Str(2 * i + 2) & ";"
& Str((4 * NbFeuilles) - (2 * i) - 1)
If i < NbFeuilles - 1 Then
CouplePage = CouplePage & ";"
End If
Next i
Impr2pages (CouplePage)
End If
End Sub


Sub Impr2pages(MesPages As String)
' fonction imprime deux pages
' adapter selon son format de papier
Application.PrintOut FileName:="",
Range:=wdPrintRangeOfPages, Item:=wdPrintDocumentContent,
Copies:=1, pages:=MesPages, PageType:=wdPrintAllPages,
Collate:=True, Background:=False, PrintToFile:=False,
PrintZoomColumn:=2, PrintZoomRow:=1,
PrintZoomPaperWidth:=11907, PrintZoomPaperHeight:=16839

End Sub

Public Sub Livretv0()
' Macro enregistre le 11/11/2003 par * * *
' imprime le document sous forme de livret
' pour imprimante imprimant les pages dans l'ordre inverse
' imprimante inverse : l'ordre des pages de la pile finale
est invers
' utilise les fonctions zoom de l'impression WORD
Dim NbPages, NbFeuilles, i, Rep, delta As Integer
Dim CouplePage As String
NbPages = ActiveDocument.BuiltInDocumentProperties
(wdPropertyPages)
NbFeuilles = Int((NbPages + 3) / 4)
If NbFeuilles * 4 <> NbPages Then
delta = NbFeuilles * 4 - NbPages
Selection.EndKey Unit:=wdStory
For i = 0 To delta - 1
Selection.InsertBreak Type:=wdPageBreak
Next i
NbPages = NbPages + delta
End If
Rep = MsgBox("Impression recto-verso de " & _
NbFeuilles & " pages ?", vbYesNo, "Livret")
If Rep = vbYes Then
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = Str((4 * NbFeuilles) - (2 *
i)) & ";" & Str(2 * i + 1)
Impr2pages (CouplePage)
Next i
Rep = MsgBox(" retourner les feuilles et appuyer
sur OK", vbOKOnly)
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = Str(2 * i + 2) & ";" & Str((4 *
NbFeuilles) - (2 * i) - 1)
Impr2pages (CouplePage)
Next i

End If
End Sub

Public Sub Livretv2()
' Macro enregistre le 11/11/2003 par * * *
' imprime le document sous forme de livret
' pour imprimante imprimant les pages dans l'ordre inverse
' imprimante inverse : l'ordre des pages de la pile finale
est invers
' utilise les fonctions zoom de l'impression WORD
Dim NbPages, NbFeuilles, i, Rep, delta As Integer
Dim CouplePage As String
NbPages = ActiveDocument.BuiltInDocumentProperties
(wdPropertyPages)
NbFeuilles = Int((NbPages + 3) / 4)
If NbFeuilles * 4 <> NbPages Then
delta = NbFeuilles * 4 - NbPages
Selection.EndKey Unit:=wdStory
For i = 0 To delta - 1
Selection.InsertBreak Type:=wdPageBreak
Next i
NbPages = NbPages + delta
End If
Rep = MsgBox("Impression recto-verso de " & _
NbFeuilles & " pages ?", vbYesNo, "Livret")
If Rep = vbYes Then
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = CouplePage + Str((4 *
NbFeuilles) - (2 * i)) & ";" & Str(2 * i + 1)
If i < NbFeuilles - 1 Then
CouplePage = CouplePage & ";"
End If
Next i
Impr2pages (CouplePage)
Rep = MsgBox(" retourner les feuilles et appuyer
sur OK", vbOKOnly)
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = Str(2 * i + 2) & ";" & Str((4 *
NbFeuilles) - (2 * i) - 1)
Impr2pages (CouplePage)
Next i
End If
End Sub
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Anacoluthe
Le #795138
Bonjour !

Cette macro qu'on trouve dans la FAQ
http://faq.ms.word.free.fr/Impression/Impression_rep.htm#i29
a été écrite pour WD2000. Vous ne dites pas laquelle de vos 3
adaptations vous utilisez. Apparemment tout se passe comme
si la deuxième série d'impression était annulée. Supprimez
l'impression en arrière plan dans Outils / Options / Impression.
Signalons aussi que WD2002 dispose contrairement à WD2000 de
l'impression en livret Fichier / Mise en page / selon livre

Anacoluthe
« Il est aussi facile de rêver un livre
qu’il est difficile de le faire. »
- Honoré de BALZAC


'CHTIOUI' nous a écrit ...
Bonjour
En utilisant une macro sur Word XP qui permet l'impression
en recto-Verso avec un format livret.
Quand j'exécute la macro la première fois, l'imprimante
sorte des pages blanches pour les pages paires du document,
alors qu'elle imprime les pages impaires.
Quand je réexécute la macro une deusième fois, le document
est imprimé normalement ( recto-verso en mode livret )
Voici le code de la procédure :

Public Sub Livretv1()
' Macro enregistrée le 11/11/2003 par * * *
' imprime le document sous forme de livret
' pour imprimante imprimant les pages dans l'ordre inverse
' imprimante inverse : l'ordre des pages de la pile finale
est inversé
' utilise les fonctions zoom de l'impression WORD
Dim NbPages, NbFeuilles, i, Rep, delta As Integer
Dim CouplePage As String
NbPages = ActiveDocument.BuiltInDocumentProperties
(wdPropertyPages)
NbFeuilles = Int((NbPages + 3) / 4)
If NbFeuilles * 4 <> NbPages Then
delta = NbFeuilles * 4 - NbPages
Selection.EndKey Unit:=wdStory
For i = 0 To delta - 1
Selection.InsertBreak Type:=wdPageBreak
Next i
NbPages = NbPages + delta
End If
Rep = MsgBox("Impression recto-verso de " & _
NbFeuilles & " pages ?", vbYesNo, "Livret")
If Rep = vbYes Then
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = CouplePage + Str((4 *
NbFeuilles) - (2 * i)) & ";" & Str(2 * i + 1)
If i < NbFeuilles - 1 Then
CouplePage = CouplePage & ";"
End If
Next i
Impr2pages (CouplePage)
Rep = MsgBox(" retourner les feuilles et appuyer
sur OK", vbOKOnly)
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = CouplePage + Str(2 * i + 2) & ";"
& Str((4 * NbFeuilles) - (2 * i) - 1)
If i < NbFeuilles - 1 Then
CouplePage = CouplePage & ";"
End If
Next i
Impr2pages (CouplePage)
End If
End Sub


Sub Impr2pages(MesPages As String)
' fonction imprime deux pages
' à adapter selon son format de papier
Application.PrintOut FileName:="",
Range:=wdPrintRangeOfPages, Item:=wdPrintDocumentContent,
Copies:=1, pages:=MesPages, PageType:=wdPrintAllPages,
Collate:=True, Background:úlse, PrintToFile:úlse,
PrintZoomColumn:=2, PrintZoomRow:=1,
PrintZoomPaperWidth:907, PrintZoomPaperHeight:839

End Sub

Public Sub Livretv0()
' Macro enregistrée le 11/11/2003 par * * *
' imprime le document sous forme de livret
' pour imprimante imprimant les pages dans l'ordre inverse
' imprimante inverse : l'ordre des pages de la pile finale
est inversé
' utilise les fonctions zoom de l'impression WORD
Dim NbPages, NbFeuilles, i, Rep, delta As Integer
Dim CouplePage As String
NbPages = ActiveDocument.BuiltInDocumentProperties
(wdPropertyPages)
NbFeuilles = Int((NbPages + 3) / 4)
If NbFeuilles * 4 <> NbPages Then
delta = NbFeuilles * 4 - NbPages
Selection.EndKey Unit:=wdStory
For i = 0 To delta - 1
Selection.InsertBreak Type:=wdPageBreak
Next i
NbPages = NbPages + delta
End If
Rep = MsgBox("Impression recto-verso de " & _
NbFeuilles & " pages ?", vbYesNo, "Livret")
If Rep = vbYes Then
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = Str((4 * NbFeuilles) - (2 *
i)) & ";" & Str(2 * i + 1)
Impr2pages (CouplePage)
Next i
Rep = MsgBox(" retourner les feuilles et appuyer
sur OK", vbOKOnly)
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = Str(2 * i + 2) & ";" & Str((4 *
NbFeuilles) - (2 * i) - 1)
Impr2pages (CouplePage)
Next i

End If
End Sub

Public Sub Livretv2()
' Macro enregistrée le 11/11/2003 par * * *
' imprime le document sous forme de livret
' pour imprimante imprimant les pages dans l'ordre inverse
' imprimante inverse : l'ordre des pages de la pile finale
est inversé
' utilise les fonctions zoom de l'impression WORD
Dim NbPages, NbFeuilles, i, Rep, delta As Integer
Dim CouplePage As String
NbPages = ActiveDocument.BuiltInDocumentProperties
(wdPropertyPages)
NbFeuilles = Int((NbPages + 3) / 4)
If NbFeuilles * 4 <> NbPages Then
delta = NbFeuilles * 4 - NbPages
Selection.EndKey Unit:=wdStory
For i = 0 To delta - 1
Selection.InsertBreak Type:=wdPageBreak
Next i
NbPages = NbPages + delta
End If
Rep = MsgBox("Impression recto-verso de " & _
NbFeuilles & " pages ?", vbYesNo, "Livret")
If Rep = vbYes Then
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = CouplePage + Str((4 *
NbFeuilles) - (2 * i)) & ";" & Str(2 * i + 1)
If i < NbFeuilles - 1 Then
CouplePage = CouplePage & ";"
End If
Next i
Impr2pages (CouplePage)
Rep = MsgBox(" retourner les feuilles et appuyer
sur OK", vbOKOnly)
CouplePage = ""
For i = 0 To NbFeuilles - 1
CouplePage = Str(2 * i + 2) & ";" & Str((4 *
NbFeuilles) - (2 * i) - 1)
Impr2pages (CouplePage)
Next i
End If
End Sub



Publicité
Poster une réponse
Anonyme