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 :

Impression d'un fichier à partir d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Concepteur CAO
    Inscrit en
    Décembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur CAO
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 65
    Par défaut Impression d'un fichier à partir d'une macro
    Bonjour le forum,

    J'utilise une macro qui me permet d'imprimer un fichier pdf enregistrer sur un serveur le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private 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
     
    Sub Print()
        Dim NomFichier As String
        Dim x As Long
        x = FindWindow("XLMAIN", Application.Caption)
        NomFichier = Range("A1") & Range("A2") & Range("A3") 'A1=chemin, A2=Nom du fichier, A3=extensions du fichier
        ShellExecute x, "print", NomFichier, "", "", 1
     End Sub
    Comme vous pouvez le constater j'utilise des options explicit en début de code. Si je ne les mets pas le code ne fonctionne pas.
    Y aurait-il d'autre type de code qui permettrai de faire la même chose sans option explicit particulière? (je souhaite imprimer uniquement du fichier . pdf)
    Je vous pose cette question car ces options explicit font planter une autre macro qui est dans le même module.
    Donc pour contourner ce problème j'ai deux modules dans mon fichier, (un pour toute mes macro et un uniquement pour celle-ci)
    Si cela est possible j'aimerai avoir qu'un module dans mon fichier (d'où ma question)! C'est peut être un peu du luxe ce que je demande ...lol
    Mais dans tout les cas je pense que ce code peut être utile à d'autre personne donc je partage

    Merci d'avance pour vos réponses
    @+

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, reformule ta question, Boileau l'a dit : "Ce qui se conçoit bien s'énonce clairement"

    Sinon en fouillant dans le bazar via Liste des contributions et téléchargements, tu devrais trouver qqch en rapport avec ta demande.

    A priori ton FindWindow ne te sert à rien.

  3. #3
    Membre confirmé
    Homme Profil pro
    Concepteur CAO
    Inscrit en
    Décembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur CAO
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 65
    Par défaut
    Salut kiki,

    Puis-je imprimer un fichier .pdf a partir d'une macro excel sans utiliser les d'options explicit ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private 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
    si oui quelle serait le code idéal?

    le bazar via Liste des contributions et téléchargements,
    je regarde

    A priori ton FindWindow ne te sert à rien.
    OK je vais tester sans.

    J'espère être plus clair....

    Merci

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, déjà tu as un problème de vocabulaire inapproprié. Pour le rôle d'Option Explicit voir ici. Après se pose avec les APIs le problème de la version 32 ou 64 bits d'Office. Développer avec Office 64 bits

    Cela d'autant plus que même Microsoft déconseille l'installation d'une version 64 bits d'Office.

    Office 32 bits est recommandé pour la plupart des utilisateurs
    Nous recommandons la version 32 bits d’Office pour la plupart des utilisateurs, car elle offre une plus grande compatibilité avec la plupart des autres applications, en particulier les compléments tiers. C’est la raison pour laquelle la version 32 bits d’Office 2013 est installée par défaut, même sur les systèmes d’exploitation Windows 64 bits. Sur ces systèmes, le client Office 32 bits est pris en charge en tant qu’installation Windows-32-on-Windows-64 (WOW64). WOW64 est l’émulateur x86 qui permet l’exécution de façon transparente des applications Windows 32 bits sur les systèmes Windows 64 bits. Cela permet aux utilisateurs de continuer à utiliser les contrôles ActiveX et les compléments COM Microsoft avec la version 32 bits d’Office.

  5. #5
    Membre confirmé
    Homme Profil pro
    Concepteur CAO
    Inscrit en
    Décembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur CAO
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 65
    Par défaut
    Merci pour ta Réponse , je regarde ça demain au boulot, je suis sur un système 32bit au Taf avec office 2010 et 64bit chez moi avec office 2013. Et en effet j'ai des souci de compatibilité lier au système 64 bit .
    Aller bonne nuit

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, il y a peut-être plus simple, ici cela fonctionne, à adapter à ton contexte notamment pour le Nom de l'imprimante.

    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
    Option Explicit
     
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Private Sub KillAcroReader()
    Dim RetVal As Long
        RetVal = Shell("Taskkill /im AcroRd32.exe /f", 0)
    End Sub
     
    Sub Tst()
    Dim sFichier As String, sImprimante As String
    Dim WsShell As Object
     
        sFichier = "C:\Essai.pdf"
        sImprimante = "EPSON AL-M200DW-00001"
     
        Set WsShell = CreateObject("WScript.Shell")
        WsShell.Run "AcroRd32 /t" & Chr(34) & sFichier & Chr(34) & sImprimante
        Set WsShell = Nothing
     
        Sleep 1000
        KillAcroReader
    End Sub

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

Discussions similaires

  1. impression d'un fichier pdf
    Par vince2005 dans le forum Langage
    Réponses: 3
    Dernier message: 26/09/2007, 00h16
  2. ouvrir un fichier excel a partir d'une macro
    Par kuhnden dans le forum Access
    Réponses: 6
    Dernier message: 07/06/2007, 15h54
  3. Impression d'un fichier PDF
    Par Orionmel dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/04/2007, 22h51
  4. impression d'un fichier PDF
    Par rogger dans le forum Access
    Réponses: 6
    Dernier message: 01/01/2006, 17h31
  5. 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

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