[VBA] Envoyer un fichier excel à l'impression
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

[VBA] Envoyer un fichier excel à l'impression



  1. #1
    matthieu2

    [VBA] Envoyer un fichier excel à l'impression


    ------

    Bonjour membres du forum,

    Une fois de plus, j'ai besoin d'aide pour du code VBA

    Je souhaite via une UserForm imprimer une feuille Excel. Voici le code:

    Code:
    Private Sub CommandButton2_Click()
    
    '*************************************************************************************************************************************************
    'Déclaration des variables
    
        Dim NbCopie As Integer
        Dim FichierTemplate As Workbook
    '*************************************************************************************************************************************************
    'Test de la case vide
    
        If TextBox2.Value = "" Then
            MsgBox "Veuillez entrer un nombre de copie à réaliser", vbCritical, "Nombre de copie non saisie"
            Exit Sub
        End If
    
    '*************************************************************************************************************************************************
        
        NbCopie = TextBox2.Value
        
        Set FichierTemplate = Workbooks.Open("G:\I care - LEAN\Maintenance Autonome\Audit 2015\Template.xlsx")
            FichierTemplate.Sheets("Template").Select
            
    
    End Sub
    Je commence par déclarer mes variables et tester si l'utilisateur à bien entré une valeur.

    Ensuite je vais chercher le fichier qui m'interesse sur le G: et sélectionnez l'onglet que je souhaite imprimer (Template).


    La variable "NbCopie" permet de paramétrer (par l'utilisateur) le nombre de copie à imprimer.

    Je bloque ici. Je ne vois pas comment envoyer le fichier à l'imprimante sachant qu'en plus ce n'est pas une imprimante en local mais sur un serveur (adresse: \\BESGWFPA01.EAME.[...].ORG\BESGPRM001).

    Merci d'avance pour votre aide. Si toute fois, mon explication n'est pas clair, n'hésitez pas à me le dire.

    @ Bientôt

    -----

  2. #2
    Pauldair

    Re : [VBA] Envoyer un fichier excel à l'impression

    Bonjour,

    Tu définis une variable contenant le nom de ton imprimante (variable Nom ci-dessous). Ce nom est celui qui apparaît dans:
    Panneau de configuration\Matériel et audio\Périphériques et imprimantes

    Ensuite les 2 lignes de code que voici:

    Code:
        Application.ActivePrinter = Nom
        ActiveWindow.SelectedSheets.PrintOut Copies:=NbCopie, ActivePrinter:= _
            Nom, Collate:=True

  3. #3
    matthieu2

    Re : [VBA] Envoyer un fichier excel à l'impression

    Bonjour,

    Merci pour ta réponse rapide.

    Arrivé au boulot ce matin, j'ai testé et il y a un petit soucis. Voila le code entré:

    Code:
    Private Sub CommandButton2_Click()
    
    '*************************************************************************************************************************************************
    'Déclaration des variables
    
        Dim NbCopie As Integer
        Dim FichierTemplate As Workbook
        Dim Imprimante As String
    '*************************************************************************************************************************************************
    'Test de la case vide
    
        If TextBox2.Value = "" Then
            MsgBox "Veuillez entrer un nombre de copie à réaliser", vbCritical, "Nombre de copie non saisie"
            Exit Sub
        End If
    
    '*************************************************************************************************************************************************
        
        NbCopie = TextBox2.Value
        Imprimante = BESGPRM001
        
        Set FichierTemplate = Workbooks.Open("G:\I care - LEAN\Maintenance Autonome\Audit 2015\Template.xlsx")
            FichierTemplate.Sheets("Template").Select
            Application.ActivePrinter = Imprimante
            ActiveWindow.SelectedSheets.PrintOut Copies := NbCopie, ActivePrinter = Imprimante, Collate := True
    
    End Sub
    Il m'indique une erreur sur l"ActivePrinter" alors que je veux écrire la suite du programme.
    Message: Compile error: Expected: named parameter

    Le nom de l'imprimante est le bon (je suis allez comme tu m'as indiqué sur le panneaux de config, etc.) Par contre je me demande s'il trouve le chemin?

    Une idée? Merci d'avance.

  4. #4
    Pauldair

    Re : [VBA] Envoyer un fichier excel à l'impression

    J'ai oublié que pour une imprimante réseau, on définit le port dans le nom de l'imprimante (port sous la forme NeXX: ou XX est un nombre de 00 à 50), il faut donc ajouter ce code:

    Code:
    Imprimante = BESGPRM001
    
    For i = 0 To 50        '    Recherche du port de l'imprimante
            If i < 10 Then
                Nom = Imprimante & " sur Ne0" & i & ":"
            Else
                Nom = Imprimante & " sur Ne" & i & ":"
            End If
            On Error Resume Next
            Application.ActivePrinter = Nom
            If ActivePrinter = Nom Then Exit For          '    Test du nom de l'imprimante
        Next

  5. A voir en vidéo sur Futura
  6. #5
    matthieu2

    Re : [VBA] Envoyer un fichier excel à l'impression

    Bonjour,

    J'ai ajouté le code mais c'est la même chose. Je me suis peut être trompé quelque part donc dans le doute je remets mon code :

    Code:
    Private Sub CommandButton2_Click()
    
    '*************************************************************************************************************************************************
    'Déclaration des variables
    
        Dim NbCopie As Integer
        Dim FichierTemplate As Workbook
        Dim Imprimante As String
    '*************************************************************************************************************************************************
    'Test de la case vide
    
        If TextBox2.Value = "" Then
            MsgBox "Veuillez entrer un nombre de copie à réaliser", vbCritical, "Nombre de copie non saisie"
            Exit Sub
        End If
    
    '*************************************************************************************************************************************************
        
        NbCopie = TextBox2.Value
        Imprimante = BESGPRM001
        
        For i = 0 To 50
            If i < 10 Then
                Nom = Imprimante & " sur Ne0" & i & ":"
            Else
                Nom = Iprimante & " sur Ne" & i & ":"
            End If
            On Error Resume Next
            Application.ActivePrinter = Nom
            If ActivePrinter = Nom Then Exit For
        Next
        
        Set FichierTemplate = Workbooks.Open("G:\I care - LEAN\Maintenance Autonome\Audit 2015\Template.xlsx")
            FichierTemplate.Sheets("Template").Select
            ActiveWindow.SelectedSheets.PrintOut Copies := NbCopie, ActivePrinter = Nom, Collate := True
            FichierTemplate.Close False
    End Sub

    Suite au bout de code, j'ai remplacé le "ActivePrinter = Imprimante" par "ActivePrinter = Nom" puisqu'on le défini au dessus. Ai-je bien fait?

    Avec l'aide de la fonction .PrintOut j'ai remarqué qu'il identifie bien "Copie" et "Collate" mais pas "ActivePrinter". Je ne sais pas si cela peut aider.

    Sinon, lorsque je vais dans le panneaux de config pour voir l'imprimante, c'est écrit: "BESGPRM001 on BESGWFPA01". J'ai essayé en mettant ce nom complet dans la variable "Imprimante" mais ça ne fonctionne pas non plus.
    Dernière modification par matthieu2 ; 17/08/2015 à 08h25.

  7. #6
    matthieu2

    Re : [VBA] Envoyer un fichier excel à l'impression

    Re Bonjour,

    Sinon j'ai accès à l'adresse MAC si c'est plus simple?

  8. #7
    Pauldair

    Re : [VBA] Envoyer un fichier excel à l'impression

    Le problème ne serait-il pas tout bêtement là:

    Code:
    Imprimante = BESGPRM001
    définir un string plutôt avec " (double quote):

    Code:
    Imprimante = "BESGPRM001"

  9. #8
    matthieu2

    Re : [VBA] Envoyer un fichier excel à l'impression

    Nop. Ne marche pas non plus

  10. #9
    matthieu2

    Re : [VBA] Envoyer un fichier excel à l'impression

    Désolé pour le double post mais les 5 min pour modifier sont passées


    Sur la ligne de code suivante:
    Code:
    ActiveWindow.SelectedSheets.PrintOut Copies := NbCopie, ActivePrinter = Nom, Collate := True
    J'obtiens avec l'aide VBA:
    PrintOut ([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName], [IgnorePrintAreas])

    1. Lorsque je passe la sourie sur le code:
    Code:
    Copies := NbCopie
    J'obtiens: PrintOut ([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName], [IgnorePrintAreas])

    2. Lorsque je passe la sourie sur le code:
    Code:
    Collate := True
    J'obtiens: PrintOut ([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName], [IgnorePrintAreas])

    3. Lorsque je passe la sourie sur le code:
    Code:
    ActivePrinter = Nom
    J'obtiens: PrintOut ([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName], [IgnorePrintAreas])

    La partie [ActivePrinter] ne se met pas en gras.

  11. #10
    Pauldair

    Re : [VBA] Envoyer un fichier excel à l'impression

    Je reviens sur ton message:

    Citation Envoyé par matthieu2 Voir le message
    lorsque je vais dans le panneaux de config pour voir l'imprimante, c'est écrit: "BESGPRM001 on BESGWFPA01". J'ai essayé en mettant ce nom complet dans la variable "Imprimante" mais ça ne fonctionne pas non plus.
    Ta version de VBA est-elle en français ou en anglais ?

    Si c'est une version en français, essaie avec le nom suivant:

    BESGPRM001 sur BESGWFPA01

    si ça ne fonctionne pas essaie aussi avec:

    BESGPRM001 sur BESGWFPA01:

    avec les deux points à la fin.

  12. #11
    Pauldair

    Re : [VBA] Envoyer un fichier excel à l'impression

    Citation Envoyé par matthieu2 Voir le message
    ...
    Sur la ligne de code suivante:
    Code:
    ActiveWindow.SelectedSheets.PrintOut Copies := NbCopie, ActivePrinter = Nom, Collate := True
    me semble que tu n'as pas mis les ":" avant le "=" après ActivePrinter :

    Code:
    ActiveWindow.SelectedSheets.PrintOut Copies := NbCopie, ActivePrinter := Nom, Collate := True

  13. #12
    matthieu2

    Re : [VBA] Envoyer un fichier excel à l'impression

    Ma version est en All in English

    C'était bien les 2 points qui manquait. La ligne de code est validé.

    J'ai lancé le programme et cela imprime bien

    Merci bcp pour ton aide Pauldair.

    Pour ceux qui sont intéressés voila le code:
    Code:
    Private Sub CommandButton2_Click()
    
    '*************************************************************************************************************************************************
    'Déclaration des variables
    
        Dim NbCopie As Integer
        Dim FichierTemplate As Workbook
        Dim Imprimante As String
    '*************************************************************************************************************************************************
    'Test de la case vide
    
        If TextBox2.Value = "" Then
            MsgBox "Veuillez entrer un nombre de copie à réaliser", vbCritical, "Nombre de copie non saisie"
            Exit Sub
        End If
    
    '*************************************************************************************************************************************************
        
        NbCopie = TextBox2.Value
        Imprimante = "BESGPRM001"
        
        For i = 0 To 50
            If i < 10 Then
                Nom = Imprimante & " sur Ne0" & i & ":"
            Else
                Nom = Imprimante & " sur Ne" & i & ":"
            End If
            On Error Resume Next
            Application.ActivePrinter = Nom
            If ActivePrinter = Nom Then Exit For
        Next
        
        Set FichierTemplate = Workbooks.Open("G:\I care - LEAN\Maintenance Autonome\Audit 2015\Template.xlsx")
            FichierTemplate.Sheets("Template").Select
            ActiveWindow.SelectedSheets.PrintOut Copies:=NbCopie, ActivePrinter:=Nom, Collate:=True
            FichierTemplate.Close False
    End Sub

Discussions similaires

  1. Impression userform Vba excel
    Par dalfred dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 16/12/2013, 12h57
  2. Problème Impression VBA EXCEL HELP
    Par dalfred dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 11/12/2013, 17h26
  3. ouvrir un fichier excel depuis un autre fichier avec VBA
    Par invite31937040 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/04/2012, 12h44
  4. Impression excel / vba
    Par invite83451e7e dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/03/2004, 09h10