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 :

Lenteur du changement d'imprimante par défaut en VBA


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut Lenteur du changement d'imprimante par défaut en VBA
    Bonsoir,
    Le changement manuel d'imprimante par défaut en passant par Démarrer/Imprimantes/ puis choisir l'imprimante et clic droit 'Définir comme impr par défaut' est quasi immédiat.
    Mais par code avec les sub qu'on trouve dans les FAQ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwitchDefaultPrinter(strPrinter)
    il faut une quinzaine de secondes, ce qui est très long.
    N'y aurait-il pas une méthode plus rapide qui m'aurait échappé ?
    et pourquoi cette différence alors que c'est la même opération et que ça aboutit au même résultat ?
    Amitiés

  2. #2
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut Question
    Bonjour,

    Cela pourra te paraitre bizarre, mais pourquoi as tu besoin de switcher l'appli sur l'imprimante par défaut ?

    Tous les états sont imprimables par défaut sur l'imprimante par défaut alors ?

    on peut forcer l'édition d'un état spécifique sur une imprimante déterminée et revenir tranquillement sur l'imprimante par défaut.

    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    @naphta
    Non, çe n'est pas bizarre : j'ai besoin de ce "switchage" en cours de route, car je laisse le choix aux utilisateurs de la forme de sauvegarde des états, dont PDF qui exige une imprimante virtuelle PDF, dans mon cas PDFCreator.
    Si tous voulaient ce format, je ferais le switch à l'ouverture, revenant à l'imprimante initiale avant fermeture du prg.
    Mais ils ne le veulent pas tous !

    on peut forcer l'édition d'un état spécifique sur une imprimante déterminée et revenir tranquillement sur l'imprimante par défaut.
    D'accord, mais ça exige une manip particulière que je ne voudrais pas imposer à l'utilisateur.

    Ces considérations laissent cependant ma question sans réponse : pourquoi cette différence de vitesse d'exécution ?

  4. #4
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut La suite
    Bonjour,


    J'avais ce genre de pépins sur un poste lenteur pour la sélection d'une autre imprimante cela venait d'une imprimante réseau qui fonctionnait comme ses pieds.
    On a viré l'imprimante et son pilote et cela n'a pas suffit il a fallu détruire le contexte utilisateur dans le domaine et le faire entrer à nouveau.
    C'est juste une piste.

    Sinon tu veux imprimer un état en pdf et revenir sur l'imprimante par défaut ?
    j'ai du code pour cela avec le PDFCreator.

    a+ et bonne chance

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    La différence de temps est due à la méthode.
    Dans la sub SwitchDefaultPrinter, VBA réécrit le fichier win.ini et force via les API à recharger tous les paramètres de win.ini
    Alors que l'autre méthode ne change que l'imprimante.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    @naphta
    Indique moi où je peux trouver ton code qui va bien. Merci

    @cafeine
    Je pense que c'est en effet l'origine de la lenteur du SwitchDefaultPrinter.

    Le changement manuel d'imprimante passe bien par du VBA quelque part et on devrait donc pouvoir simuler en VBA ce changement, c'est-à-dire court-circuiter les API sans recharger tous les paramètres.
    Ca devrait suffire ?

    Mais comment faire ?
    A+

  7. #7
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut
    Bonjour,

    Voici le code pour faire un pdf attention avec les paramètres par défaut de pdfcréator et reseter l'imprimante par défaut.
    Ici pour faire état en pièce attachée au mail.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Sub ReportPDFCreator(lekel As String, leouerre)
    ' Impression PDF et PJ dans le Mail
    ' lekel nom de l'état
    ' leouerre Clause Where pour état avec paramètre
     
    Dim NumIMP As Integer
    Dim NombreImp As Integer
    Dim ImpCherche
    Dim cpt As Integer
     
    NumIMP = 0
    NombreImp = Application.Printers.Count
    For Each ImpCherche In Application.Printers
        If ImpCherche.DeviceName = "PDFCreator" Then
            Set Application.Printer = Application.Printers(NumIMP)
            Exit For
            Else
            NumIMP = NumIMP + 1
        End If
    Next ImpCherche
     
    If NumIMP = NombreImp Then
        MsgBox "Vous n'avez pas d'imprimante PDFCreator !!", vbCritical, "Impossible"
        Exit Sub
    End If
     
    If leouerre <> "Aucune" Then
        DoCmd.OpenReport lekel, acViewPreview, , leouerre ' ICI Etat avec Clause Where
        Else
        DoCmd.OpenReport lekel, acViewPreview
    End If
     
    DoCmd.PrintOut acPrintAll, , , 1
    DoCmd.Close acReport, lekel
    Set Application.Printer = Nothing
     
    End Sub
    Il y a une super contribution sur le forum à voir pour modifier les paramètres de pdfcreator by le code sans passer par la registry comme je le faisais (honte à moi).
    ici
    http://www.developpez.net/forums/sho...d.php?t=508953

    a+

  8. #8
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut pitite erreur
    Bonjour,

    Je viens de relire le code petite erreur
    numimp=0
    en trop
    désolé
    a+

  9. #9
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    je crois que Application.Printer n'est disponible qu'à partir de XP ou 2003 ... hors quand j'ai écrit le tutoriel, je n'avais que Access 2000 sous la main.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Effectivement Application.Printers n'existe pas dans Access2000.
    Merci à vous malgrès cela.

    Je vais examiner le site signalé par naphta.
    Amitiés

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Bonjour,
    Je n'avais pas mis "résolu" à ce post, car je n'ai toujours pas trouvé comment accélérer l'exportation en pdf.
    Or, je viens seulement de me rendre compte qu'OpenOffice Writer (comme le classeur), permet une exportation en pdf très rapide, sans qu'il y ait besoin d'installer une imprimante virtuelle PDF.
    C'est aussi rapide que d'exporter en doc.
    Ce forum n'est pas le bon endroit pour discuter de Ooo, mais j'ai tenu à le signaler, car il est possible que certains aient d'autres idées à ce sujet.
    Maintenant je vais chercher comment utiliser cela avec Access.
    Précision : je n'ai gardé d'Office MS que Access, car Base de Ooo n'est pas aussi puissant.

    Amitiés

Discussions similaires

  1. Changement d'imprimante par défaut
    Par Herman dans le forum VBA Access
    Réponses: 9
    Dernier message: 15/07/2010, 14h59
  2. Synchronisation sur le changement d'imprimante par défaut
    Par bleuerouge dans le forum Windows Forms
    Réponses: 0
    Dernier message: 11/01/2010, 09h53
  3. Changement de l'imprimante par défaut non pris en compte
    Par KRis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/05/2008, 12h10
  4. Réponses: 8
    Dernier message: 06/12/2004, 12h24
  5. Impression PDF et imprimante par défaut
    Par bobbafet dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/11/2004, 21h33

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