.papersize bug!

pacoako

XLDnaute Occasionnel
Bonjour à tous,

Je me prend la tête depuis hier sur la propriété .papersize.

Mon problème est le suivant. Je me suis créé un petit formulaire maison permetant au utilisateur d'imprimer le classeur. Il peuvent choisir l'imprimante, la couleur/noir&blanc, le format du papier et l'ajustement en hauteur/largeur.

Lorsque j'ai créé ma macro de modification de mise en page au tout début, je suis resté assez surprit de voir que les constantes proprosées par VBA ne fonctionnait pas sur l'imprimante par défaut de mon ordi.

J'essayait de changer la mise en page de ma zone d'impression comme ceci (OBLetter et autres étant des OptionButtons:

Code:
If OBLetter = True Then LaFeuille.PageSetup.PaperSize = xlPaperLetter
If OBLegal = True Then LaFeuille.PageSetup.PaperSize = xlPaperLegal
If OB11x17 = True Then LaFeuille.PageSetup.PaperSize = xlPaper11x17

Mais j'obtenait un bug à chaque exécution.

J'ai donc enregistré une nouvelle macro pour voir ce qui se passait quand je changeait manuellement le format de papier dans la mise en page.

Et voici les valeurs qui sont attribué à .papersize via la macro

Letter = 120
Legal = 119
11x17 = 144

J'ai donc attribué ses valeurs à mon .papersize au lieu des constantes proposées par VBA ce qui donnait ceci :

Code:
If OBLetter = True Then LaFeuille.PageSetup.PaperSize = 120
If OBLegal = True Then LaFeuille.PageSetup.PaperSize = 119
If OB11x17 = True Then LaFeuille.PageSetup.PaperSize = 144

Mais là je me suis aperçu qu'une utilisatrice du fichier obtenait toujours un bug peut importe le format de papier..

J'ai donc adapté mon code avec ses valeurs à elle et même ajouté les constantes par défaut pour être certain.. ce qui donne ceci..

Code:
On Error GoTo PageSetupError
If OBLetter = True Then LaFeuille.PageSetup.PaperSize = 120
If OBLegal = True Then LaFeuille.PageSetup.PaperSize = 119
If OB11x17 = True Then LaFeuille.PageSetup.PaperSize = 144
GoTo SkipError

PageSetupError:
On Error GoTo PageSetupError2
If OBLetter = True Then LaFeuille.PageSetup.PaperSize = xlPaperLetter
If OBLegal = True Then LaFeuille.PageSetup.PaperSize = xlPaperLegal
If OB11x17 = True Then LaFeuille.PageSetup.PaperSize = xlPaper11x17
GoTo SkipError

PageSetupError2:
On Error GoTo PageSetupErrorLast
If OBLetter = True Then LaFeuille.PageSetup.PaperSize = 125
If OBLegal = True Then LaFeuille.PageSetup.PaperSize = 124
If OB11x17 = True Then LaFeuille.PageSetup.PaperSize = 169

SkipError:

Mais là au nombre d'imprimantes que nous avons je me demande combien de fois je vais devoir adapter mon code... ça commence à faire pas mal de possibilités et de gestion d'erreur dans mon code...

Ma question est la suivante :

N'y a t'il pas une façon d'obtenir la même combobox qu'Excel affiche lors de la mise en page pour modifier le format du papier ou de contourner le problème?

Je préfèrerais ne pas avoir à afficher le formulaire de mise en page d'Excel.. pour diverses raisons dans mon code...

Merci infiniment pour vos commentaires!

A+

(Je vous joint mon formulaire si ça peut vous aider à m'aider :D )
 

Pièces jointes

  • UFImprimerCalendrier.zip
    2.5 KB · Affichages: 20
Dernière édition:
G

Guest

Guest
Re : .papersize bug!

Bonjour,

Eh oui toutes les imprimantes n'ont pas les même formats de papiers disponibles!!!

Affichage de la boîte de dialogue Printer:

Code:
Application.Dialogs(xlDialogPrinterSetup).Show

A+
 

pacoako

XLDnaute Occasionnel
Re : .papersize bug!

Oui ça je comprends bien mais n'y a-t-il pas moyen de répliquer les boîtes de dialog implémentées dans Excel sans avoir à les faire apparaître?...

Est-ce qu'il y a un moyen d'ajouter à une combobox les formats de papier disponibles pour l'imprimante active? (Application.Activeprinter) La même combobox qu'il y a pour le format du papier dans la mise en page..?

Merci pour ton aide Hasco!
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 473
Membres
103 553
dernier inscrit
jhnm