Imprimer certains onglets en recto/verso en VBA

snheed

XLDnaute Nouveau
Bonjour à tous,

Je me permets de poster un nouveau message car je n'ai pas trouvé de réponse en effectuant une recherche sur le forum ni sur internet.

J'ai fais une macro qui sélectionne des onglets particuliers en fonction du mois en cours. Je voudrais que cette macro lance ensuite une impression de ces onglets en recto/verso.

J'ai essayé cette commande :

Code:
ActiveWindow.SelectedSheets.PrintOut ManualDuplexPrint:=True

mais a priori il s'agit d'une commande pour imprimer un document word.

J'ai également essayé cette commande :

Code:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

que j'avais obtenu en utilisant l'enregistreur de macro et en lançant une impression après avoir sélectionné le mode recto/verso dans les paramètres de l'imprimante. Mais ça ne marche pas non plus.

J'ai lu sur un forum que cette dernière commande peut fonctionner si on paramètre chaque onglet par défaut en impression recto/verso. Mais je ne vois pas comment faire cela en VBA.

Merci d'avance à tous ceux qui pourront m'aider.

Snheed
 

Gael

XLDnaute Barbatruc
Re : Imprimer certains onglets en recto/verso en VBA

Bonjour Snheed, bonjour à tous,

En fait, il faut aller sur chaque onglet et choisir l'option recto/verso dans les propriétés de l'imprimante puis 'Fermer' pour valider (pas 'OK' sinon on imprime).

Ensuite tu fais Fichier Imprimer, tu choisis 'Classeur entier' ou tu sélectionnes tous les onglets avant d'imprimer puis OK et ça doit marcher (dans les 2 cas, la pagination se fait pour l'ensemble du document).

Une autre idée serait de convertir ton classeur Excel en document Acrobat que tu peux par la suite imprimer comme tu le souhaites.

Le problème est que cette option recto-verso ne fait pas partie d'Excel mais des options de l'imprimante utilisée. Si tu es seul utilisateur de ton fichier, une fois chaque onglet paramétré, tu n'as plus qu'à lancer l'impression en VBA, sinon la meilleure solution pour moi reste le PDF.

@+

Gael
 

snheed

XLDnaute Nouveau
Re : Imprimer certains onglets en recto/verso en VBA

Merci Gaël pour ta réponse.

En attendant des réponses, j'ai continué mes recherches sur Internet et j'ai également trouvé des personnes qui conseillaient les même pistes que tu viens de m'indiquer.

Mon problème, c’est que ce fichier va être utilisé par plusieurs personnes, sur plusieurs sites et toutes ces personnes n’ont pas les mêmes imprimantes. Tous n’ont pas non plus un niveau informatique suffisant pour faire toutes les manipulations que tu m’indiques dans ta première solution d’où mon idée de simplifier avec une macro…

L’idée du pdf est intéressante mais elle oblige une nouvelle fois l’utilisateur à exécuter plusieurs étapes et à aller sélectionner des options d’impressions qu’il n’a pas l’habitude d’utiliser. L’application doit être la plus simple possible et cette solution me semble compliquer un petit peu plus les choses…

Si tous les utilisateurs avaient utilisé la même imprimante et que cette imprimante avait été paramétrée en recto/verso par défaut, je n’aurais pas rencontrez de problème mais malheureusement, ce n’est pas le cas. Mes recherches sur internet m’ont confirmées que ce que je cherchais à faire n’était pas possible sous Excel en VBA. Il va donc falloir que je revois ma copie et que je trouve une nouvelle façon de gérer mon application.

Merci encore de t’être penché sur mon problème.

Snheed
 

Gael

XLDnaute Barbatruc
Re : Imprimer certains onglets en recto/verso en VBA

Bonsoir SnHeed,

L'intérêt du PDF est de pouvoir être lancé via VBA.

Dans un autre Fil plus ancien, j'avais proposé l'utilisation de fichiers postscript (.PS) en liaison avec distiller sur un répertoire réseau (Si les utilisateurs n'ont pas d'imprimante postscript, il suffit d'en installer une de façon virtuelle qui ne servira qu'à créer le PS.

Mais la solution retenue finalement par le demandeur est à base de PDFWriter avec le code suivant du à notre ami Thierry:

Code:
Const ThePath As String = 'X:\\Commandes\\UTA\\2005\\INDIVISION\\Archives\\'

Sub TestPrintPDF()
Dim Nom As String

Nom = x
Application.SendKeys Keys:=ThePath & Nom + '~'
Sheets('Feuil1').PrintOut ActivePrinter:='Acrobat PDFWriter sur LPT1:'

End Sub

@+

Gael
 
G

Guest

Guest
Re : Imprimer certains onglets en recto/verso en VBA

bonjour snheed,
Bonjours tous,

Je ne sais si cela peut t'aider mais j'ai utilisé la macro suivante pour imprimer un classeur en recto verso. Elle test le numéro d'index de la feuille mais elle peut être adaptée pour d'autre tests Paire/Impaire

Code:
Sub ImprimerPaireImpaire(Optional bPaire As Boolean = True)
    Dim i As Integer
    For i = 1 To Worksheets.Count
        If (bPaire And i Mod 2 = 0) Or (Not bPaire And i Mod 2 <> 0) Then Worksheets(i).PrintPreview
    Next
End Sub
 
Sub ImprimerClasseur()
   ImprimerPaireImpaire False
   ImprimerPaireImpaire True
End Sub

bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40