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

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    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
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    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
    ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    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)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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 régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    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 379
    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 379
    Points : 12 075
    Points
    12 075
    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 régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    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
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui absolument
    Nom : demo.gif
Affichages : 1280
Taille : 568,6 Ko
    Nom : demo1.gif
Affichages : 1296
Taille : 716,2 Ko
    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

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    je te crois mais je ne comprends pas là où mon erreur !

    moi ret="ET-2500 Series(Réseau) on Ne04:"

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    et ben voila il fallait commencer par ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ret="ET-2500 Series(Réseau)"
    le on nexxxx c'est le port il faut pas le mettre
    pour etre sur regarde dans ton gestionnaire d'imprimante et péripherique comme je t'ai dis plus haut
    les nom doivent etre absolument identique pour le activeprinter en ecriture meme si en lecture il te donne xxxx on ne4 ou sur ne4 ou je ne sais quoi
    Nom : Capture.JPG
Affichages : 1306
Taille : 78,7 Ko
    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

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Pourtant dans Excel ça a une importance bon je vais bosser dans ce sens je te tiens au jus Patrick

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    bon j'ai modifié le nom de mes imprimante je passe maintenant par :

    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
     
    Sub imprimantes()
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     Set imprimantesinstallées = objWMIService.ExecQuery _
        ("Select * from Win32_Printer")
    For Each imprimante In imprimantesinstallées
        defaut = ""
        If imprimante.Default Then
        defaut = "imprimante par défaut"
        End If
        UserForm8.ListBox2.AddItem imprimante.Name
    Next
     End Sub
    j’obtiens bien

    Nom : page2.jpg
Affichages : 1187
Taille : 129,8 Ko
    Nom : page5.jpg
Affichages : 1225
Taille : 121,7 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ret="ET-2500 Series(Réseau)" à la place de  ret="ET-2500 Series(Réseau) on NEO4:"
    Et on es bien d'accord que je liste bien les Imprimantes de Windows ????

    Nom : page6.jpg
Affichages : 1174
Taille : 109,9 Ko

    depuis modification de mon code voici ma liste dans ma listbox

    Nom : page7.jpg
Affichages : 1132
Taille : 29,0 Ko

    Mais hélas ça ne change rien !

    et en pas à pas si je passe ma souris sur la variable STDprinter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    STDprinter = traitementTexte.ActivePrinter
    Nom : page1.jpg
Affichages : 1229
Taille : 121,9 Ko

    Et j’atteins bien celle de Word car si je change dans Word l'imprimante par défaut elle change bien.

    Elle m'affiche "ET-2500 Series(Réseau) on NEO4:"

    Ce QUI AU PASSAGE EST BIZARD ! car vue que mon pack office et Windows 10 sont en français ( et avec License légale ) je devrais plutôt avoir "ET-2500 Series(Réseau) SUR NEO4:"
    Et non "ET-2500 Series(Réseau) ON NEO4:" bref !!!

    Et tu peux peux voir que la variable n'a pas changée et forcement l'imprimante non plus !!!!

    Nom : page3.jpg
Affichages : 1171
Taille : 111,5 Ko

    Une idée ?

  13. #13
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    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.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour Scouby77

    ferme ton fichier excel et teste ca dans un fichier vierge
    dans cet exemple j'imprime sur les deux imprimante
    j'installe la pdf et reviens sur l'original puis imprime cette fois ci en papier
    je viens de tester 10 fois d'affiller jai 10 pdf sur mon bureau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim word As Object, Ledoc As Object, stdprinter$
    Set word = CreateObject("word.application")
    word.Visible = True
    stdprinter = Split(Split(word.ActivePrinter, " on NE")(0), " sur NE")(0)'on memorise l'imprimante actuelle sans l'extention de port 
    Debug.Print stdprinter
    Set Ledoc = word.documents.Add
    word.ActivePrinter = "Bullzip PDF Printer"' on change d'imprimante
    Ledoc.PrintOut 'on imprime
    word.ActivePrinter = stdprinter 'je remet l'imprimante initiale toujours sans extention de port 
    Ledoc.PrintOut'on imprime a nouveau 
    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

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Je viens de tester cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ret = imp1
    STDprinter = traitementTexte.ActivePrinter
    With Dialogs(wdDialogFilePrintSetup)
        .Printer = imp1
        .DoNotSetAsSysDefault = True
        .Execute
    End With
    Ledoc.PrintOut , Copies:=UserForm8.ComboBox6.Value
    With Dialogs(wdDialogFilePrintSetup)
         .Printer = STDprinter
         .DoNotSetAsSysDefault = True
         .Execute
    End With
    Et ça marche !

    Je change sur le temps de l'impression l'imprimante par défaut de Word sans changer celle de Windows ou Excel et je remets celle par défaut de Word

    Hum bizard non ?

    Merci à tous pour vos aides

    Bon rectificatif erratum lol

    Je change bien l'imprimante mais il ne me remet pas après l'ancienne imprimante !

    pour : Menhir

    oui je test plus haut dans mon code si la combobox a bien une valeur numérique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If IsNumeric(UserForm8.ComboBox6.Value) = False Then
    MsgBox "Vous ne pouvez que saisir une valeur de type numérique !", vbCritical, "Message du système"
    UserForm8.ComboBox6.Value = "1"
    Feuil1.Select
    Application.ScreenUpdating = True
    Exit Sub
    End If
    et pour la virgule, sans ça plante !

    Bon ce coup là c'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ret = imp1
    STDprinter = traitementTexte.ActivePrinter
    With Dialogs(wdDialogFilePrintSetup)
        .Printer = imp1
        .DoNotSetAsSysDefault = True
        .Execute
    End With
    Ledoc.PrintOut , Copies:=UserForm8.ComboBox6.Value
    With Dialogs(wdDialogFilePrintSetup)
        .Printer = STDprinter
        .DoNotSetAsSysDefault = True
        .Execute
    End With
    Je change bien dans Word l'imprimante et après l'impression je remets l'imprimante qui était par défaut.
    Merci à vous deux

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    passer par le dialog c'est un choix mais tu n'a pas resolu ton probleme initial en fait
    mais si ca te convient ma fois que du bonheur

    d'autant plus que ceci si je traduit en francais :

    .DoNotSetAsSysDefault = True--->signifie ne pas la mettre par defaut


    ce qui veux dire que tu devrais pas avoir besoins de 2d with pour remettre stdprinter
    je dis ca je me trompe peu etre hein
    bref vraiment bizarre ton windooos

    mais entre nous je pense avoir trouver leshmilblik il n'est pas la ou tu crois
    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

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Si car en définitif l'utilisateur choisi bien son imprimante dans le listbox, et tout le reste reste transparent et invisible pour lui

    d'autant plus que ceci si je traduit en francais :

    .DoNotSetAsSysDefault = True--->signifie ne pas la mettre par defaut


    ce qui veux dire que tu devrais pas avoir besoins de 2d with pour remettre stdprinter
    je dis ca je me trompe peu etre hein
    bref vraiment bizarre ton windooos
    euh bin non figures toi car j'ai essayé sans et paf le chien !!!

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    reflechi un peu
    tu choisi ta microsoft pdf printer OK
    TU LUI DEMANDE d'imprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ledoc.Application.PrintOut , Copies:=UserForm8.ComboBox6.Value
    d'apres toi qu'est ce que windows va comprendre??

    que tu veux x copie en pdf OK

    SAUF que ca n'est pas possible en imprimante virtuelle pdf quelqu'elle soit
    pour faire ca il faudrait imprimer,imprimer,imprimer autant que le value du combo

    pourquoi?!! et la je supute!! je pense que ceux qui ont créer ce pdfprinter il se sont dit en papier on peu avoir besoins de x feuille pour papa,maman,tonton
    en pdf c'est un fichier donc quel est l'utilité d'avoir 36 fichier absolument identiques dans un dossier
    surtout que la encore le pdfprinter construit le nom avec le nom du word donc si le tien de printer pdf comme le mien d'ailleurs n'incremente pas les noms
    ca imprime une fois et le reste en erreur
    conclusion le reste du code ne s'effectue pas meme si selon le pdfprinter l'erreur n'est pas revelé par un return a vba par celui ci
    je dis ca moi je dis rien

    au mieux le pdfprinter remplace le precedent imprimé a chaque tour mais j'ai un doute car la windows s'en melle est modifie le nom avec (x) donc la il y a conflit car le pdfprinter en fin d'impression ne recois pas lson OK puis que le fichier qu'il viens de créer n'existe pas
    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

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    reflechi un peu
    tu choisi ta microsoft pdf printer OK
    TU LUI DEMANDE d'imprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ledoc.Application.PrintOut , Copies:=UserForm8.ComboBox6.Value
    d'apres toi qu'est ce que windows va comprendre??

    que tu veux x copie en pdf OK

    SAUF que ca n'est pas possible en imprimante virtuelle pdf quelqu'elle soit
    pour faire ca il faudrait imprimer,imprimer,imprimer autant que le value du combo

    pourquoi?!! et la je supute!! je pense que ceux qui ont créer ce pdfprinter il se sont dit en papier on peu avoir besoins de x feuille pour papa,maman,tonton
    en pdf c'est un fichier donc quel est l'utilité d'avoir 36 fichier absolument identiques dans un dossier
    surtout que la encore le pdfprinter construit le nom avec le nom du word donc si le tien de printer pdf comme le mien d'ailleurs n'incremente pas les noms
    ca imprime une fois et le reste en erreur
    conclusion le reste du code ne s'effectue pas meme si selon le pdfprinter l'erreur n'est pas revelé par un return a vba par celui ci
    je dis ca moi je dis rien

    au mieux le pdfprinter remplace le precedent imprimé a chaque tour mais j'ai un doute car la windows s'en melle est modifie le nom avec (x) donc la il y a conflit car le pdfprinter en fin d'impression ne recois pas lson OK puis que le fichier qu'il viens de créer n'existe pas
    J'ai prévue ce fait mais pas affiché dans mon code exemple pour résoudre mon problème

    Donc plus haut dans mon code il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If imp1 Like "*PDF*" Then
    UserForm8.ComboBox6.Value = "1"
    End If
    Pour éviter les qui voudraient avoir x copies du PDF

    Mais je te remercie de me l'avoir signalé

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    re
    pour le coup j'ai telechargé microsoft pdf printer pour W7
    c'est ni plus ni moins qu'un hersats de bullzip pdf printer une ressemblence assez troublante sauf qu'il a moins d'outils
    je sais que pour w10 il y est nativement d'apres ce que j'ai lu , mais rien ne t'empeche d'installer quelque chose de plus performant
    et effectivement dans ton cas l'erreur est inconnu car il ne fait pas le return a VBA (testé)
    c'est etonnant vu que c'est la meme famille avec office
    bref j'ai tout dis je crois

    bon ben je confirme a 100% l'erreur vient bien de "copies....."
    voici une capture pour preuve
    dans le combobox j'ai choisi 4 ( 4 (pdf)) ok
    voici mon code complet de l'userform que j'ai fait pour les tests
    on voit bien que si c'est "pdf" ca remplace par "1"
    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
    Public Sub test()
    Dim word As Object, Ledoc As Object, stdprinter$
    Set word = CreateObject("word.application")
    word.Visible = True
    oldprinter = Split(Split(word.ActivePrinter, " on NE")(0), " sur NE")(0) 'on memorise l'imprimante actuelle sans l'extention de port
    Debug.Print stdprinter
    Set Ledoc = word.documents.Add
    newprinter = "7-PDF Printer"
    word.ActivePrinter = newprinter ' on change d'imprimante
    Ledoc.PrintOut , copies:=IIf(LCase(newprinter) Like "*pdf*", 1, ComboBox1.Value)' donc pas bon (si pdf il ne faut pas la precision copies )
    word.ActivePrinter = oldprinter 'je remet l'imprimante initiale toujours sans extention de port
    Ledoc.PrintOut 'on imprime a nouveau
    End Sub
    Private Sub CommandButton1_Click()
    If ComboBox1.ListIndex = -1 Then ComboBox1.Value = 1
    test
    End Sub
    Private Sub UserForm_Activate()
    ComboBox1.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
    End Sub
    sauf que le fait de mettre meme copies=1 ca en fait 2
    et dans la capture ci dessous tu vois tres bien que les deux ont le meme nom
    Nom : Capture.JPG
Affichages : 1166
Taille : 198,2 Ko

    CONCLUSION TON EXEPTION DOIT ETRE CATEGORIQUE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if blabla like "*pdf*" then
     ledoc.printout' simplement 
    else
    ledoc.printout,copies:=.........
    end if
    depuis un moment deja je savais que ca venais de la
    voila
    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

+ 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