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:
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 :
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..
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 😀 )
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 😀 )
Pièces jointes
Dernière édition: