VBA format papersize par défaut

  • Initiateur de la discussion Initiateur de la discussion chris
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chris

XLDnaute Barbatruc
Bonjour

Quand on crée un nouveau classeur, dans la mise en page la taille du papier reprend automatiquement la taille par défaut de l'imprimante.

Mon problème est de trouver cette info car dans un code, je dois formater une impression en fonction de la taille papier par défaut de l'utilisateur.

La feuille étant déjà paramétrée en A4 je ne sais comment rétablir une taille par défaut d'autant que le code qui imprime cette feuille calcule les sauts de pages et qu'il faut donc que la taille soit correctement paramatrée avant.

Merci
 
Re : VBA format papersize par défaut

Bonjour

Le problème c'est le classeur se promène dans le monde entier et je ne sais pas si c'est A4, letter ou autre.

Il faut donc que je récupère via VBA la valeur par défaut du PC où le classeur est utilisé.
 
Re : VBA format papersize par défaut

Bonjour
Re James007

Non plus car ce n'est pas une taille user mais la valeur par défaut de l'imprimante par défaut du PC.

En attendant mieux, j'ai bricolé une solution pas très élégante mais qui semble OK : je

  • crée un nouveau classeur (workbook.add)
  • accède à la mise en page
  • récupère le paramètre papersize (qui est bien celui de l'imprimante par défaut)
  • ferme le classeur
  • affecte le papersize à ma feuille
Il semble qu'on puisse faire mieux via les API mais je n'ai pas trouvé d'exemple VBA sur le net.

Avis aux spécialistes !
 
Re : VBA format papersize par défaut

Re James007

Merci de ta recherche c'est très sympa.

la page correspond bien à une partie de cette API mais j'ai 3 soucis :

  • il doit falloir installer une library car là cela ne marche pas
  • le paramètre qui m'intéresse est DC_PAPERSIZE qui n'est pas dans cet exemple
  • réflexion faite je crains que les API ou libraries à installer ne soient pas les mêmes selon les configurations et que cela boque donc sur certains PC.
ARF DUR DUR ce truc !
 
Re : VBA format papersize par défaut

... nouvelle recherche ...
pour ton paramètre
DC_PAPERSIZE
Copies the dimensions of all supported paper sizes, in tenths of a millimeter, to an array of POINT structures pointed to by the pOutput parameter. The width (x-dimension) and length (y-dimension) of a paper size are returned as if the paper were in the DMORIENT_PORTRAIT orientation

Il te faut la librairie winspool.drv ...

Code:
Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As Long

En espèrant que cela t'aide ...
A +

P.S.
Source:
http://allapi.mentalis.org/apilist/DeviceCapabilities.shtml
 
Dernière édition:
Re : VBA format papersize par défaut

Re

Tu cherches ou trouves mieux que moi !

Je n'ai pas trouvé sur cette page mais par ricochet sur le terme Winspool.drv j'ai atterri sur Ce lien n'existe plus
et j'ai un code qui fonctionne et me retourne bien la taille en ajoutant une fonction
Code:
Public Function GetPaperSize() As Long
    GetPaperSize = GetPrinterProperty(DM_PAPERSIZE)
End Function
Donc un grand merci à toi.

Bon week end

PS : sur mon PC cela marche sans ajouter de library dans les références
 
Re : VBA format papersize par défaut

Re

Tu cherches ou trouves mieux que moi !

Je n'ai pas trouvé sur cette page mais par ricochet sur le terme Winspool.drv j'ai atterri sur Ce lien n'existe plus
et j'ai un code qui fonctionne et me retourne bien la taille en ajoutant une fonction
Code:
Public Function GetPaperSize() As Long
    GetPaperSize = GetPrinterProperty(DM_PAPERSIZE)
End Function
Donc un grand merci à toi.

Bon week end

PS : sur mon PC cela marche sans ajouter de library dans les références

Merci pour ton commentaire ...
Je suis content que tu aies pû résoudre ton problème ..
Bon Week-End
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour