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 :

Comment Fermer l'Acrobate ou Adobe Reader


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut Comment Fermer l'Acrobate ou Adobe Reader
    Bonsoir à ceux qui passeront par là.

    J'imprime un "PDF" comme ceci:

    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
    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 IMPRIMER_PDF()
        Dim FICHIER_A_IMPRIMER As String
        Dim x As Long
        x = FindWindow("XLMAIN", Application.Caption)
     
    ' Le chemin du "FICHIER_A_IMPRIMER" est à adapter:
     
    FICHIER_A_IMPRIMER = "C:\Documents and Settings\MA_POMME\Bureau\MACHIN.pdf"
     
        ShellExecute x, "print", FICHIER_A_IMPRIMER, "", "", 1
     
    End Sub
    Cependant l'Application utilisée reste ouverte! Ce n'est pas mon souhait.
    Je sais fermer le processus de l'une ou l'autre.
    Mais ne sachant pas celui ouvert par le biais de ma procédure,
    je ne sais comment trouver son Nom, et le faire.
    (Ou simplement fermer la dite Application)

    Merci d'avance, si vous m'apporter une aide.

    Bonne fin de fin de semaine à tous.

    Yann

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Essayez avec le code suivant

    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
    Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" ( _
      ByVal lpClassName As String, ByVal lpWindowName As String)
    Private Declare Function PostMessage& Lib "user32" Alias "PostMessageA" ( _
      ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam 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)
     
    Private Const WM_CLOSE = &H10
     
    Sub IMPRIMER_PDF()
    Dim FICHIER_A_IMPRIMER As String
    Dim Hdl&
    Dim Rep&
    FICHIER_A_IMPRIMER = "Documents and Settings\MA_POMME\Bureau\MACHIN.pdf"
    Hdl& = FindWindow("XLMAIN", Application.Caption)
    ShellExecute Hdl&, "print", FICHIER_A_IMPRIMER, vbNullString, vbNullString, 1
    Hdl& = FindWindow(vbNullString, "Adobe Reader")
    Rep& = PostMessage(Hdl&, WM_CLOSE, vbNull, vbNull)
    End Sub
    Cordialement.

    PMO

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 121
    Par défaut
    Salut
    Un petit tour du coté de la source

    Plus exactement ce passage
    Citation Envoyé par AideM$
    Renvois
    La valeur de renvoi est le handle de l'instance de l'application qui a été ouverte ou imprimée, si la fonction a opéré correctement (ce handle pourrait également être le handle d'une application de serveur DDE). Une valeur de renvoi inférieure ou égale à 32 indique une erreur.
    Je n'ai pas testé, mais je serais tenté de dire que si la valeur retourné par l'API ShellExecute est supérieure a 32, elle représente le handle de l'appli qu'elle a lancé, tu devrais pouvoir fermer cette même appli en passant son numero de handle en parametre du PostMessage sité par PMO2017

    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    Bonjour, ou bonsoir PMO2017, Owazerty et à ceux qui passeront par là.

    Merci pour votre aide, et le temps que vous y avec passé.

    A toi PMO2017; Adobe ne se ferme pas en utilisant ton code ???
    A toi Owazerty; je vais fouiner du coté de la "Source"... Quand je serai grand!

    A ce jour, je suis un peu trop limite dans mes compétences pour comprendre et adapter.
    (En plus à soixante balais ça rentre moins vite...)

    Je suis contraint d'abdiquer dans ce que je souhaitais faire.

    Merci encore, bravo pour ce que vous faites et bonne fin de fin de semaine.

    Yann

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 121
    Par défaut
    Salut
    Le code donné par PMO2017 ne fonctionne pas a cause de la chaine de text recherché comme titre de fenêtre "Adobe Reader", cette chaine il me semble n'est pas toujour la même en Fct° de version de reader utilisé ainsi que des fichier ouvert par lui, ca n'est d'ailleurs pas spécifique a ce programme, les programme rajoute souvent le nom du fichier ouvert en caption, "Acrobat Reader - Monfichier.pdf"
    Essais ce code (je ne l'ai pas testé), je reprend le code de PMO2017, en esperent qu'il ne m'en tienne pas rigueur ^^

    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
    Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" ( _
      ByVal lpClassName As String, ByVal lpWindowName As String)
    Private Declare Function PostMessage& Lib "user32" Alias "PostMessageA" ( _
      ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam 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)
     
    Private Const WM_CLOSE = &H10
     
    Sub IMPRIMER_PDF()
    Dim FICHIER_A_IMPRIMER As String
    Dim Hdl&
    Dim Rep&
     
    FICHIER_A_IMPRIMER = "Documents and Settings\MA_POMME\Bureau\MACHIN.pdf"
    Hdl& = FindWindow("XLMAIN", Application.Caption)
    Hdl& = ShellExecute(Hdl&, "print", FICHIER_A_IMPRIMER, vbNullString, vbNullString, 1)
    Rep& = PostMessage(Hdl&, WM_CLOSE, vbNull, vbNull)
    End Sub
    [Edit]
    Attention avec Document and setings, ca m'etonnerais qu'il trouve la cible ? si?
    [/Edit]
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 121
    Par défaut
    Re
    Oupss mes excuse, mon code ne fonctionne pas puisque le fichier une fois imprimé est fermé, par contre celui de PMO2017 fonctionne parfaitement, a condition qu'aucun autre fichier pdf ne soit ouvert avec Adobe, sinon la recherche de la fenêtre "Adobe Acrobat" retourne un résulta null.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. [WD16] Fermer adobe reader après impression
    Par law56100 dans le forum WinDev
    Réponses: 2
    Dernier message: 18/06/2012, 14h07
  2. adobe reader comment agrandir ?
    Par vivi12 dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 02/02/2011, 14h56
  3. Comment nettoyer Adobe Reader 7.0
    Par petitlouis2 dans le forum Windows XP
    Réponses: 4
    Dernier message: 13/11/2007, 12h55
  4. Réponses: 11
    Dernier message: 20/09/2007, 14h51
  5. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42

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