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 :

Changement d'imprimante VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut Changement d'imprimante VBA
    Bonjour,

    Sur un fichier j'ai crée une macro pour choisir l'imprimante de destination pour imprimer mon document.
    Ensuite je souhaite qu'en fermant le fichier, revenir sur l'imprimante par défaut avec l'aide d'une macro.

    Il me note une erreur d'exécution '1004'

    Erreur lors de l'impression sur Mouniia (nom de l'imprimante) sur Ne01 :. Le fichier n'a pas été imprimé.
    Raisons possibles :
    La mémoire disponible est peut-être insuffisante. Essayez de fermer les documents et programmes que vous n'utilisez pas.
    Si vous utiliser une imprimante connectée à un reseau le problème
    Fin/Débogage/Aide

    Cette macro qui change l'imprmante, ferme et enregistre ce trouve sur un autre fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RG62018FermeRapportGouvMatin()
    '
    ' RG62018FermeRapportGouvMatin Macro
    '
     
    '
        Windows("Rapports Gouvernant 6.xlsm").Activate
        Sheets("Debut Rapport Couverture").Select
         Application.ActivePrinter = "Mouniia sur Ne01:"
         ActiveWorkbook.Save
         ActiveWindow.Close
     
    End Sub

    Pouvez-vous m'aider à ne plus voir ce message d'erreur et m'expliquer pourquoi ?!
    Car quand je fais fin, l'imprimante par défaut reviens bien sur "Mouniia" imprimante réseau.
    Merci beaucoup !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par YES6003 Voir le message
    Bonjour,

    J'utilise parfois cette procédure pour éditer. Elle mémorise l'imprimante active et la remet en fin de code. Elle peut peut-être vous servir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub LancerLImpression()
     
    Dim sDefaultPrinter As String
     
        sDefaultPrinter = Application.ActivePrinter
        Application.ActivePrinter = "PDFCreator"
     
        ' .....
     
        Application.ActivePrinter = sDefaultPrinter
     
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut
    Merci pour votre retour :

    J'ai modifié en recopiant uniquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ActivePrinter = sDefaultPrinter
    Car je ne veux rien éditer, juste fermer et choisir l'imprimante par défaut.

    En fait mon problème est qu'une fois que j'imprimais sur l'autre imprimante n°2, celle-ci devenait l'imprimante "par défaut" sur excel.
    Donc si je ne modifie pas cela va toujours s'imprimer sur l'autre imprimante n°2 et non celle vraiment par défaut "Mouniia".

    avec Application.ActivePrinter = sDefaultPrinter, j'ai toujours une erreur d'exécution 1004 :
    La méthode 'ActivePrinter' de l'objet '_Application' a échoué
    désolé je n 'ai peut-être pas fait la bonne manip ?!
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par YES6003 Voir le message
    Au moment où vous utilisez ce code, êtes-vous sur une autre instance d'Excel ? Auquel cas, ce n'est pas Application qu'il faut utiliser mais le nom de votre instance.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut
    Je suis dans excel, je lance la macro en appuyant sur le bouton crée.
    C'est censé me remettre sur un autre fichier excel déjà ouvert au préalable.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par YES6003 Voir le message
    Regardez cette fonction de Pierre FAUCONNIER
    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
    39
    40
     
     
    Sub RG62018FermeRapportGouvMatin()
     
     
        With Workbooks("Rapports Gouvernant 6.xlsm")
             .Activate
             .Sheets("Debut Rapport Couverture").Activate
             .Close savechanges:=True
        End With
     
        If PrinterExists("Mouniia sur Ne01:") Then
           Application.ActivePrinter = "Mouniia sur Ne01:"
        Else
            MsgBox "L'imprimante n'existe pas !", vbCritical
     
        End If
     
    End Sub
     
     
    Function PrinterExists(ByRef PrinterName As String) As Boolean
    ' De Pierre Fauconnier 09/08/2017
      Dim Wmis As Object
      Dim Printers As Object
      Dim Found As Boolean
      Dim Printer As Object
     
      Set Wmis = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
      Set Printers = Wmis.execquery("select * from win32_printer")
     
      For Each Printer In Printers
        If StrComp(Printer.Name, PrinterName, vbTextCompare) = 0 Then
          Found = True ' Valeur de retour de la fonction
          PrinterName = Printer.Name ' Paramètre modifié dans le code appelant grâce à ByRef
          Exit For ' Sortie de boucle
        End If
      Next
      PrinterExists = Found
    End Function

Discussions similaires

  1. [XL-2010] VBA Excel Changement d''imprimante impossible
    Par verdenals dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2017, 17h51
  2. Changement d'imprimante par défaut
    Par Herman dans le forum VBA Access
    Réponses: 9
    Dernier message: 15/07/2010, 14h59
  3. Lenteur du changement d'imprimante par défaut en VBA
    Par AndréPe dans le forum VBA Access
    Réponses: 10
    Dernier message: 19/11/2008, 08h48
  4. problème de changement d'imprimante
    Par Stach dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/05/2008, 09h05
  5. [debutant]ShellExecute et changement d'imprimante
    Par pimousse_cerise dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/01/2007, 18h20

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