Avancée : Nécessite un codage expert, une interopérabilité et des compétences multi-utilisateurs. Cet article s'applique à une base de données Microsoft Access (.mdb) ou à une base de données Microsoft Office Access 2007 (.accdb). Cet article s'applique également à un projet Microsoft Access (.adp).

Symptômes

Après avoir modifié les propriétés programmatiques de l'objet Application.Printer, les formulaires et les rapports qui utilisent l'imprimante par défaut n'héritent pas automatiquement de ces paramètres.

Cause

Les formulaires enregistrés et les rapports stockent les informations d'imprimante dans le cadre de leur définition. Lorsque vous prévisualisez ou imprimez des formulaires et des rapports enregistrés, ces objets utilisent les informations d'imprimante qui sont stockées à l'intérieur d'eux au lieu d'hériter des paramètres de l'objet Application.Printer.

Résolution

Il existe deux solutions de contournement possibles pour forcer le rapport à utiliser les paramètres d'imprimante actuels. Microsoft fournit des exemples de programmation pour l'illustration seulement, sans garantie soit exprimée ou implicite. Cela comprend, sans s'y limiter, les garanties implicites de marchandabilité ou d'aptitude à un but particulier. Cet article suppose que vous connaissez le langage de programmation qui est démontré et les outils qui sont utilisés pour créer et déboguer les procédures. Les ingénieurs de support Microsoft peuvent aider à expliquer la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou construire des procédures pour répondre à vos exigences spécifiques.

Définir la propriété de l'imprimante sur Application.Printer

Après avoir personnalisé les propriétés de l'objet Application.Printer, configurez la propriété Imprimante du formulaire ou signalez-la à l'objet Application.Printer. Cela oblige le formulaire ou le rapport à détruire sa structure DEVMODE actuelle et à hériter d'une nouvelle structure de l'objet Application.Printer. Notez que cette approche est bonne pour changer temporairement les propriétés de l'imprimante de l'objet. Les paramètres de l'imprimante ne seront pas stockés avec l'objet à moins que vous n'enregistreriez explicitement l'objet par la suite. Cela provoque également le set de l'objet sur l'imprimante spécifique pour la période de temps qu'il est ouvert. Pour définir la propriété Imprimante de l'objet sur l'objet Application.Printer, suivez les étapes suivantes :

  1. Ouvrez la base de données d'échantillons Northwind.mdb.

  2. Fermez le formulaire De commutation principal lorsqu'il apparaît.

  3. Appuyez sur ALT-F11 pour ouvrir Visual Basic Editor.

  4. Dans le menu Insertion, cliquez sur Module.

  5. Ajoutez le code Visual Basic for Applications suivant au nouveau module :

    Sub ChangePrinterSettingsForReport()   Dim rpt As Access.Report   Dim prtr As Access.Printer      Set Application.Printer = Nothing   Set prtr = Application.Printer      'Set the default printer's orientation to landscape   prtr.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   prtr.PaperSize = acPRPSLegal   'Print Preview the Alphabetical List of Products Report   DoCmd.OpenReport "Alphabetical List of Products", acPreview   Set rpt = Reports("Alphabetical List of Products")   'Set the Printer property of the report to the   'Application.Printer object   Set rpt.Printer = prtr   'Uncomment the following line if you wish to save the object   'with the current settings   'DoCmd.Save acReport, rpt.NameEnd Sub
  6. Cliquez dans la procédure de l'échantillon ci-dessus, puis sur le menu Exécuter, cliquez sur Run Sub/UserForm.

  7. Dans le menu Fichier, cliquez sur Fermer et revenir à Microsoft Access.

  8. Dans Microsoft Office Access 2003 ou dans Microsoft Access 2002, cliquez sur La configuration de la page dans le menu Fichier, puis cliquez sur l'onglet Page. Dans Microsoft Office Access 2007, cliquez sur le bouton Microsoft Office, pointez versPrint, puis cliquez sur Print Preview. Sur l'ongletAperçu d'impression, cliquez sur La configuration de la page dans le groupePage Layout, puis cliquez sur l'onglet Page. Notez que la taille du papier du rapport est fixée à juridique, et l'orientation est fixé au paysage.

  9. Fermez le rapport.

  10. Dans la fenêtre Base de données, imprimez à nouveau la liste alphabétique des produits. Notez que les paramètres de l'imprimante n'ont pas été automatiquement enregistrés avec le rapport.

Attribuer directement les paramètres de l'imprimante de l'objet

Une autre configuration consiste à définir programmatiquement les paramètres d'imprimante de l'objet lui-même, au lieu de les définir sur la propriété Application.Printer. Le réglage des propriétés individuelles de la propriété Imprimante de l'objet est similaire à celui qui modifie manuellement les paramètres d'imprimante de l'utilisateur dans la boîte de dialogue de configuration de page. Lorsque vous configurez les paramètres d'imprimante de l'objet directement, les paramètres sont enregistrés automatiquement avec l'objet. Pour définir directement les paramètres de l'imprimante de l'objet, suivez les étapes suivantes :

  1. Ouvrez la base de données d'échantillons Northwind.mdb.

  2. Fermez le formulaire De commutation principal lorsqu'il apparaît.

  3. Appuyez sur ALT-F11 pour ouvrir Visual Basic Editor.

  4. Dans le menu Insertion, cliquez sur Module.

  5. Ajoutez le code Visual Basic for Applications suivant au nouveau module :

    Sub ChangePrinterSettingsForReport()   Dim rpt As Access.Report     DoCmd.OpenReport "Alphabetical List of Products", acPreview   Set rpt = Reports("Alphabetical List of Products")         'Set the default printer's orientation to landscape   rpt.Printer.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   rpt.Printer.PaperSize = acPRPSLegalEnd Sub
  6. Cliquez dans la procédure de l'échantillon ci-dessus, puis sur le menu Exécuter, cliquez sur Run Sub/UserForm.

  7. Dans le menu Fichier, cliquez sur Fermer et revenir à Microsoft Access.

  8. Dans le menu Fichier, cliquez sur La configuration de la page,puis cliquez sur l'onglet Page. Dans Microsoft Office Access 2007, cliquez sur le bouton Microsoft Office, pointez versPrint, puis cliquez sur Print Preview. Sur l'ongletAperçu d'impression, cliquez sur La configuration de la page dans le groupePage Layout, puis cliquez sur l'onglet Page. Notez que la taille du papier du rapport est fixée à juridique, et l'orientation est fixé au paysage.

  9. Fermez le rapport.

  10. Dans la fenêtre Base de données, imprimez à nouveau la liste alphabétique des produits. Notez que les paramètres de l'imprimante ont été automatiquement enregistrés avec le rapport.

Statut

Ce comportement est inhérent au produit.

Informations supplémentaires

Les formulaires et les rapports stockent une structure nommée DEVMODE dans le cadre de leur définition. La structure DEVMODE est une structure Microsoft Windows qui définit les informations d'imprimante pour un objet particulier. Par exemple, des articles tels que la taille du papier, le bac en papier et l'orientation sont stockés dans cette structure. Lorsque vous créez un nouveau formulaire ou un objet de rapport, le formulaire ou l'objet de rapport hérite automatiquement de la structure DEVMODE de l'objet Application.Printer. Lorsque vous enregistrez le formulaire ou le rapport, la structure DEVMODE héritée est automatiquement sauvegardée avec elle. Par défaut, les propriétés d'imprimante de l'objet Application.Printer seront les mêmes que l'imprimante par défaut dans Microsoft Windows. Cependant, il est possible de modifier programmatiquement ces propriétés afin que Microsoft Access utilise un ensemble différent de propriétés pour l'imprimante par défaut. Les tableaux, requêtes, vues et procédures stockées ne stockent pas les informations d'imprimante dans leur définition. Par conséquent, lorsque vous imprimez des tables, des requêtes, des vues ou des procédures stockées, ils utilisent toujours les paramètres actuels définis dans l'objet Application.Printer.

Procédure pour reproduire le problème

  1. Dans Access 2003 ou dans Access 2002, ouvrez la base de données d'échantillons Northwind.mdb.

  2. Fermez le formulaire De commutation principal lorsqu'il apparaît.

  3. Sur le menu Afficher, pointez vers les objetsde base de données, puis cliquez sur Rapports.

  4. Cliquez sur le rapport de la Liste Alphabétique des Produits dans la fenêtre Base de données, puis sur le menu De fichier cliquez sur Page Setup.

  5. Cliquez sur l'onglet Page et vérifiez que l'option Imprimante par défaut est sélectionnée sous la section Imprimante de la boîte de dialogue.

  6. Cliquez sur OK pour fermer la boîte de dialogue de configuration de page.

  7. Dans le menu Insertion, cliquez sur Module.

  8. Ajoutez le code Visual Basic for Applications suivant au module :

    Sub ChangePrinterSettings()   'Set the default printer's orientation to landscape   Application.Printer.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   Application.Printer.PaperSize = acPRPSLegalEnd Sub
  9. Cliquez dans la procédure de l'échantillon ci-dessus, puis sur le menu Exécuter, cliquez sur Run Sub/UserForm.

  10. Dans le menu Fichier, cliquez sur Fermer et revenir à Microsoft Access.

  11. Sur le menu Afficher, pointez vers les objetsde base de données, puis cliquez sur Queries.

  12. Cliquez sur la liste alphabétique des requêtes de produits, puis sur le menu Fichier, cliquez sur Aperçu d'impression.

  13. Dans le menu Fichier, cliquez sur Page Setup.

  14. Cliquez sur l'onglet Page. Notez que l'option Orientation est répartie sur Paysage et que l'option Taille de papier est fixée à l'option légale comme prévu.

  15. Cliquez sur Annuler pour fermer la boîte de dialogue de configuration de page, puis fermez la requête.

  16. Sur le menu Afficher, pointez vers les objetsde base de données, puis cliquez sur Rapports.

  17. Dans la fenêtre Base de données, cliquez sur le rapport Liste alphabétique des produits, puis cliquez sur Aperçu.

  18. Dans le menu Fichier, cliquez sur Page Setup.

  19. Cliquez sur l'onglet Page. Notez que l'option Orientation est répartie sur Portrait et que l'option Taille de papier est mise sur Lettre, qui diffère des paramètres effectués sur l'objet Application.Printer.

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la traduction ?
Qu’est-ce qui a affecté votre expérience ?

Nous vous remercions pour vos commentaires.

×