IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

A la fermeture d'access, rétablir l'imprimante par défaut initiale d'ouverture


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Par défaut A la fermeture d'access, rétablir l'imprimante par défaut initiale d'ouverture
    Bonjour,

    Ici, PrintOlder me sauvegarde le nom d'imprimante défaut à l'ouverture du formulaire menu général, et lorsque je quitte ce dernier et donc l'appli, je veux switcher vers cette PrintOlder, au cas où l'imprimante par défaut s'est modifié au cours de l'utilisation de l'outil par un user.

    [Pour rappel, getdefaultprinter récupère le nom de l'imprimante par défaut, et "SwitchDefaultPrinter(AutreImprimante" as string) détermine AutreImprimante comme Imprimante par défaut.
    Ces fonctions fonctionnent très bien sur mon appli, au sein d'1 fonction PDF d'un module, lorsque je veux sortir un pdf d'un état par exemple. ]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Compare Database
    Option Explicit
    Public PrintOlder As String
     
    Public Sub Form_Open(Cancel As Integer)
    'Call Initialisation sert pour autre chose
    PrintOlder = getdefaultPrinter
    Msgbox "" & PrintOlder & ""
    End Sub
     
    Private Sub Form_Close() 'en cas de variations successives d'impr par default, on va récupérer l'imprimante par défaut à l'ouverture de fichier>plus de pb
    Msgbox "" & PrintOlder & ""
    SwitchDefaultPrinter PrintOlder
    Msgbox "" & PrintOlder & ""
    End Sub
    J'aimerais que lorsque je quitte mon fichier Access, l'imprimante par défaut lors de l'ouverture se rétablisse.
    Ici j'ai 2 sub, et donc ma variable PrintOlder se différencie entre les 2 Sub, c'est là le problème.
    A la fermeture, mon PrintOlder devient vide, il n'y a plus d'impr par défaut. Je sais que le problème est que PrintOlder est une variable. Mais comment faire pour que ce soit une variable qui une fois qu'elle reçoit l'imprimantepardefaut, ne puisse plus être modifiée comme une constante? La réponse doit être simple, mais j'ai essayé tout ce que je savais...

  2. #2
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Bonjour,

    La durée de vie de ta variable est liées à celle de l'instance du formulaire ouvert.
    Si tu fermes le formulaire puis tu le réouvres, la variable est réinitialisée.


    ==> déclare ta variable dans un module global.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Par défaut 2Soluces=:form;form+module>marche pas quand on ferme puis qu'on réouvre le formulaire
    Solution 1

    Là j'ai mis le code de form_close, que j'ai viré, dans le bouton quitter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Public PrintOlder As String
     
    Public Sub Form_Open(Cancel As Integer)
    Call Initialisation 'pas important pour ici
    PrintOlder = getdefaultPrinter
    Msgbox "" & PrintOlder & ""
    End Sub
     
    Public Sub Quitter_l_application_Click()
    On Error GoTo Err_Quitter_l_application_Click
     
        Msgbox "" & PrintOlder & ""
        SwitchDefaultPrinter PrintOlder
        Msgbox "" & PrintOlder & ""
        DoCmd.Quit
     
    Exit_Quitter_l_application_Click:
        Exit Sub
    Err_Quitter_l_application_Click:
        Msgbox Err.Description
        Resume Exit_Quitter_l_application_Click
    End Sub
    Merci pour ta réponse
    Tu as raison, ça ne marche plus quand on réouvre ce formulaire, il ne garde plus l'ipr par défaut intiale.

    Solution 2
    Voilà ce que j'avais déjà essayé précédemment avec ta méthode de module globale, et cela ne marchait pas, pour le même pb que dans mon 1er post, à savoir que PrintOlder devenait vide en quittant l'appli. Mais ça fait exactement la même chose, ça réinitialise au lieu de garder constant le PrintOlder quand on ferme et on rouvre le formulaire générale :

    Form_Menu_général:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Sub Form_Open(Cancel As Integer)
    'Call Initialisation
    'PrintOlder = getdefaultPrinter
    'Msgbox "" & PrintOlder & ""
    EnregistrerImprDefaut
    End Sub
     
    Public Sub Quitter_l_application_Click()
    'On Error GoTo Err_Quitter_l_application_Click
        'Msgbox "" & PrintOlder & ""
        'SwitchDefaultPrinter PrintOlder
        'Msgbox "" & PrintOlder & ""
    RetablirImprDefaut
    DoCmd.Quit
     
    Exit_Quitter_l_application_Click:
        Exit Sub
    Err_Quitter_l_application_Click:
        Msgbox Err.Description
        Resume Exit_Quitter_l_application_Click
    End Sub
    Module (pas module de classe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Compare Database
    Option Explicit
     
    Public PrintOlder as string
     
    Function EnregistrerImprDefaut()
    PrintOlder = getdefaultPrinter
    Msgbox "" & PrintOlder & ""
    End Function
     
    Function RetablirImprDefaut()
    Msgbox "" & PrintOlder & ""
    SwitchDefaultPrinter PrintOlder
    Msgbox "" & PrintOlder & ""
    End Function
    J'imagine que j'ai mal compris ce que tu me conseillait, mais je ne vois pas quoi faire d'autre...

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/05/2006, 10h22
  2. [VB.NET] Connaître l'imprimante par défaut
    Par botanique dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/02/2006, 14h14
  3. [printDialog] Imprimante par défaut
    Par Antunes dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 06/01/2005, 12h51
  4. Réponses: 8
    Dernier message: 06/12/2004, 13h24
  5. Impression PDF et imprimante par défaut
    Par bobbafet dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/11/2004, 22h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo