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 :

Comment imprimer un fichier "PRN" via code VBA.


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut Comment imprimer un fichier "PRN" via code VBA.
    Bonjour,

    j'aimerais bien savoir comment envoyer ou imprimer un fichier *.PRN en utilisant un code vba.
    j'ai une fonction qui détermine l'emplacement du fichier (associer à la BDD).

    code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function GetDBLocation() As String
    Dim db As Database
     
    Set db = CurrentDb
     
    GetDBLocation = Left(db.Name, Len(db.Name) - Len(Dir(db.Name)))
     
    Set db = Nothing
     
    End Function
    appel Fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim  strFichier as String
    strFichier = GetDBLocation & "Verso.prn"
    merci pour l'aide que vous pouvez m'apporter à l'avance.

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Tu peux utiliser l'API ShellExecute (ça se trouve dans la FAQ).

    Ci-dessous, un code un peu remanié, à placer dans un module de code standard :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, _
            ByVal lpOperation As String, _
            ByVal lpFile As String, _
            ByVal lpParameters As String, _
            ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As Long
     
    Public Enum TypeOuverture
     
        imprimer = 1
        ouvrir = 2
     
    End Enum
     
    Public Sub OuvrirDocument(strCheminFichier As String, Optional Action As TypeOuverture = 2)
     
    '--------------------------------------------------------------------------------------------
    ' Projet          : Interface Windows
    ' Auteurs         : Romain Puyfoulhoux - http://access.developpez.com
    '                   Christophe Warin (Tofalu) - http://access.developpez.com
    '                   pour la gestion des erreurs
    ' Version / Date  : 1.0 / 01.01.2008
    ' Révision / Date : 1.1 / 11.03.2008 - Modification de l'appel - énumération + passage
    '                                      optionnel du type d'action (ouverture ou impression,
    '                                      mode ouverture par défaut)
    '
    ' Commentaires    : Permet d'ouvrir un fichier sans déclarer l'application a utiliser
    '
    '                   Exemple d'appel :
    '                   Call OuvrirDocument ("C:\Projets Access\Exemple.doc", ouvrir)
    '
    '                   La gestion d'erreur doit se faire dans l'appelant. L'erreur peut être
    '                   affichée comme ceci.
    '
    '                   MsgBox Err.Description
    '
    ' Lien            : http://access.developpez.com/faq/?page=Automation#shellexecute
    '--------------------------------------------------------------------------------------------
     
        'Déclaration de la variable
        Dim strDescriptionErreur As String
     
        Select Case ShellExecute(0, IIf(Action = ouvrir, "open", "print"), strCheminFichier, vbNullString, vbNullString, 1)
     
            Case 0: strDescriptionErreur = "Le système manque de mémoire ou de ressources, l'exécutable est corrompu ou réallocations non valides."
            Case 2: strDescriptionErreur = "Fichier non trouvé."
            Case 3: strDescriptionErreur = "Chemin non trouvé."
            Case 5: strDescriptionErreur = "Une tentative a été faite pour se lier dynamiquement à une tache, ou il y a eu une erreur de partage ou de protection réseau."
            Case 6: strDescriptionErreur = "La librairie requiert des segments de données séparés pour chaque tâche."
            Case 8: strDescriptionErreur = "Il n 'y a pas assez de mémoire disponible pour lancer l'application."
            Case 10: strDescriptionErreur = "Version de Windows incorrecte."
            Case 11: strDescriptionErreur = "Le fichier exécutable n'est pas correct, il se peut que ce ne soit pas une application Windows, ou qu'il y ait une erreur dans le fichier .EXE;"
            Case 12: strDescriptionErreur = "L'application a été conçue pour un autre système d'exploitation."
            Case 13: strDescriptionErreur = "L'application a été conçue pour MS-DOS 4.0."
            Case 14: strDescriptionErreur = "Le type de fichier exécutable est inconnu."
            Case 15: strDescriptionErreur = "Tentative de chargement d'une application en mode réel."
            Case 16: strDescriptionErreur = "Tentative de charger une seconde instance d'un fichier exécutable contenant plusieurs segments de données qui ne sont pas marqués en lecture seule."
            Case 19: strDescriptionErreur = "Tentative de charger un fichier exécutable compressé. Le fichier doit être décompressé avant d'être chargé."
            Case 20: strDescriptionErreur = "Fichier de librairie liée dynamiquement (DLL) incorrect, une des DLLs requise pour exécuter cette application est corrompue."
            Case 21: strDescriptionErreur = "L'application requiert les extensions Microsoft Windows 32-bit."
            Case 31: strDescriptionErreur = "Il n 'y a pas d'association pour le type de fichier spécifié, ou il n'y a pas d'association pour l'action choisie pour le type de fichier choisi."
     
        End Select
     
        If strDescriptionErreur <> "" Then
     
            Err.Raise vbObjectError + 513, "Librairie - basShellExe - OuvrirDocument", strDescriptionErreur
     
        End If
     
    End Sub
    Domi2

  3. #3
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    je te remerci pour ta réponse,

    j'ai essayé d'appeler la procédure à partir d'un bouton sur click mais je reçois l'erreur d'exécution '-2147220991 (80040201)' disant: il n'y a pas d'association pour le type de fichier spécifié, ou il n'y a pas d'association pour l'action choisie pour le type de fichier choisi .

    code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande15_Click()
    Dim strFichier As String
    strFichier = GetDBLocation & "Verso.prn"
    OuvrirDocument strFichier, ouvrir
    End Sub

    ou ce trouve l'erreur svp.

    merci

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Tu as bien une application qui te permet d'ouvrir ces fichiers .prn, non ?

  5. #5
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut
    je m'explique ...au début, je voulais à partir de ma base de donnée Access imprimer un fichier Word (c'est fait) puis j'ai pensé à une autre solution, convertir le fichier ( Option d'impression : imprimer dans un fichier) et au lieu d'ouvrir le fichier word chaque fois que je veux l'imprimer , j'envoie le fichier prn à l'imprimante pour l'impression.


    un type comme sendfile to printer


    voila c'est ce que je voulais.



    merci à vous.

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Ok, je comprend mieux (je ne voyais pas trop pourquoi ouvrir ou imprimer un fichier .prn).

    Là, je n'ai pas d'idée, le code que je t'ai indiqué fonctionne parfaitement pour un document Word, par exemple, mais ne fait pas ce que tu demandes.

    Domi2

  7. #7
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    finalement je pense que je vais revenir à ma première solution car les fichier "prn" dépend des pilotes de l'imprimante choisie, si on change l'imprimante le fichier ne sera pas imprimer.

    merci à vous.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Alors dans ce cas, le code donné plus haut fonctionne parfaitement.

    Le recours à cette API offre l'avantage de ne pas avoir à spécifier quelle application utiliser pour ouvrir ou imprimer un fichier.

    C'est défini par l'association faite dans les options des dossiers.

    Domi2

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

Discussions similaires

  1. Comment imprimer un fichier Pdf directement à partir de Delphi ?
    Par toumoham dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 07/12/2005, 15h28
  2. [C#] Comment imprimer un fichier .pdf ?
    Par petoulachi dans le forum C#
    Réponses: 9
    Dernier message: 05/10/2005, 15h30
  3. Comment imprimer un fichier text existant?
    Par AODRENN dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 17h26

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