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

Macros et VBA Excel Discussion :

impossible d'imprimer sur une imprimante de mon choix en changeant l'imprimante par défaut [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut impossible d'imprimer sur une imprimante de mon choix en changeant l'imprimante par défaut
    Bonjour à tous,


    Je rencontre un problème, je fais choisir l'imprimante de son choix à l'utilisateur depuis une liste que je récupère sur le poste et que j'affiche dans une listebox.
    Je récupère bien son nom sous le bon format en français avec la variable "ret" puis je stock le nom de l'imprimante par défaut comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    STDprinter = Application.ActivePrinter
    Application.ActivePrinter = ret
        ' change printer
       Ledoc.Application.ActiveDocument.PrintOut , Copies:=UserForm8.ComboBox6.Value
      ' prints the active sheet
        Application.ActivePrinter = STDprinter
      '------------------------------------------------------>
    en pas à pas il y a bien le nom de l'imprimante par défaut , le nom de l'imprimante choisie en remplacement puis il remet l'ancien imprimante par défaut.
    Sauf que malgré le changement il continu a imprimer sur STDprinter !!!!


    avez-vous des idées ????

    Merci par avance pour vos aides

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    tu remets trop vite l'imprimante par défaut.

    Que se passe-t-il en remettant par exemple ainsi l'imprimante par défaut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgbox "cliquer ici lorsque l'impression a été terminée"
     Application.ActivePrinter = STDprinter
    et en ne cliquant que lorsque l'impression est finie.
    ?

    EDIT : autre chose : l'imprimante de remplacement choisie est-elle valable (et donc prise réellement en compte) ?
    Que se passe-t-il en supprimant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Application.ActivePrinter = STDprinter
    ?

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je suppose que ta macro est dans Excel (sinon, on se demande ce que ta question ferait dans cette rubrique).

    Dans ce cas, "Application" dans parent désigne Excel.
    Donc, tu modifies l'imprimante par défaut d'Excel et tu t'étonnes que Word n'en tienne pas compte...

    Il serait plus judicieux de modifier l'imprimante par défaut de Word, non ?

    Ce qui est étonnant, c'est que ta ligne suivante montre que tu as compris comment désigner l'application Word en passant par le document traité.
    Cela dit, j'espère que LeDoc et ActiveDocument sont deux documents différents. Sinon, on se demande à quoi sert l'empilement Ledoc.Application.ActiveDocument.

    Autre détail : l'imprimante cible est un des paramètres de PrintOut.
    Donc, si c'est pour une impression unique, il y a plus simple que de modifier l'imprimante par défaut et de revenir ensuite à l'imprimante d'origine.

    Dernier détail : pour le choix de l'imprimante, tu peux plus simplement passer par Application.Dialogs(xlDialogPrinterSetup)

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonsoir
    OU!! changer l'imprimante par defaut dans windows carément

    les noms d'imprimantes tel qu'il sont dans le gestionnaire d'imprimante windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set imprim = CreateObject("WScript.Network")
    imprim.SetDefaultPrinter "EPSON XP-243 245 247 Series"
    End Sub
    Sub imprimante_virtuelle_pdf()
    Set imprim = CreateObject("WScript.Network")
    imprim.SetDefaultPrinter "Bullzip PDF Printer"
    End Sub

    tu veux connaitre l'imprimante par default dans windows
    un exemple ave WMI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub sur_quelle_imprimante_je_suis2WMI()
    Const ATTR_DEFAULT = 4
    strComputer = "."
    Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPrinters = oWMI.ExecQuery("SELECT * FROM Win32_Printer")
    For Each oPrinter In colPrinters
        If oPrinter.Attributes And ATTR_DEFAULT Then
            Debug.Print Trim(oPrinter.Name)
        End If
    Next
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    je pensais effectivement en toute bonne fois que je changeais l'imprimante de Windows et non celle d'Excel je comprend mon erreur !
    Donc effectivement il faut que je change celle de Word

    Donc nouvelle question comment changer l'imprimante dans Word depuis Excel ???

    C'est bon j'ai changé comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim traitementTexte As Word.Application
     
     
     
     
    STDprinter = traitementTexte.ActivePrinter
    traitementTexte.ActivePrinter = ret
        ' change printer
       Ledoc.Application.PrintOut , Copies:=UserForm8.ComboBox6.Value
      ' prints the active sheet
        traitementTexte.ActivePrinter = STDprinter
      '------------------------------------------------------>
    et ça à l'air de bien marcher !
    je continu mes tests

    non hélas fausse joie je vois bien l'imprimante de Word par défaut mais il ne veut pas la changer grrrr
    Une idée pour m'aider ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    ma fois c'est bizarre ton truc chez moi au plus simple j'ai testé en changeant plusieurs fois d'imprimante ca match
    a partir d'excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Set word = CreateObject("word.application")
    word.documents.Add
    word.Visible = True
    word.ActivePrinter = "EPSON XP-243 245 247 Series"
    word.activedocument.PrintPreview
    End Sub
    c'est bien l'imprimante indiquée qui est selectionnée
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Depuis Excel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim traitementTexte As Word.Application
     
     
     
     
     
     
    STDprinter = traitementTexte.ActivePrinter ' là j'ai bien la bonne imprimante dans Word par défaut !
    traitementTexte.ActivePrinter = ret   'ret est bien l'imprimante que je veux utiliser mais activeprinter reste avec la valeur de STDprinter
     Ledoc.PrintOut , Copies:=UserForm8.ComboBox6.Value
       traitementTexte.ActivePrinter = STDprinter
      '------------------------------------------------------>
    J'y perds mon latinus

    Car malgré un ret qui represente l'imprimante que je veux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    traitementTexte.ActivePrinter = ret
    L'imprimante reste sur les valeurs de STDprinter

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par scoubi77 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Ledoc.Application.PrintOut , Copies:=UserForm8.ComboBox6.Value
    Je ne suis pas spécialiste des macro Word mais, à ma connaissance, la couche Application n'est pas indispensable pour un PrintOut qui peut être lancé directement sur Document.
    https://msdn.microsoft.com/library/b...ice.15%29.aspx
    En plus, c'est beaucoup plus sûr.

    Autre chose : c'est quoi cette virgule qui traine entre PrintOut et Copies ?

    Encore un truc : Est-ce que tu es sûr que le contenu de ton ComboBox6 est une valeur numérique et que ce n'est pas une chaine de caractère ressemblant à une valeur numérique ?

    Citation Envoyé par scoubi77 Voir le message
    Une idée pour m'aider ?
    Je t'en ai déjà donné dans le post #3 : utiliser Application.Dialogs(xlDialogPrinterSetup) pour le choix de l'imprimante, ce qui te permet d'éviter les problèmes de nom.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Quel langage pour imprimer sur une imprimante spécifique
    Par popovitch130 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 21/03/2009, 18h44
  2. [Impression] Imprimer sur une imprimante non installée
    Par MattC dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 25/11/2008, 18h35
  3. Impression d'un fichier PDF sur une imprimante de mon choix
    Par juhel philippe dans le forum Documents
    Réponses: 2
    Dernier message: 04/11/2008, 18h10
  4. Imprimer sur une imprimante particulière
    Par b.avet dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 10/01/2007, 15h44
  5. Imprimer sur une imprimante donnée
    Par scorpion37 dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/06/2006, 11h32

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