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

  1. #1
    Membre du Club
    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
    Points : 40
    Points
    40
    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 éprouvé
    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
    Points : 1 219
    Points
    1 219
    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 éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    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 du Club
    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
    Points : 40
    Points
    40
    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 éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    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 éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    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

  7. #7
    Membre du Club
    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
    Points : 40
    Points
    40
    Par défaut
    Diantre! Owazerty, quelle ténacité admirable à vouloir m'aider !!!

    Alors que je voulais abandonner, me voici quasi obligé
    de poursuivre; ne serait-ce que par respect pour ta patience.

    Je vais effectivement reprendre le code de PMO2017
    en précédant le "Documents and Settings" de la lettre idoine.

    J'ai, après avoir reçu son aide et préalablement rectifié ce point,
    fait moult tentatives; mais sans résultat! Ma presbytie en est sans doute responsable.

    Je ne te cacherai pas que j'ai fait recherche sur d'autres sites, et y ai trouvé solution.
    Sauf que j'abhorre les "Mdr&Chdr#1789" qui font "Pro" mais qui n'aident pas à comprendre!
    (20 lignes; c'est trop!!!)

    Un seul fichier PDF est ouvert à l'instant où je souhaite l'imprimer.
    L'application ne serait ouverte qu'après la conversiond'une page "xls"
    en "PDF", mais je l'ai fermée préalablement.

    Au plaisir d'apprécier ton savoir.
    LORIENT jouait hier soir.
    Ce soir j'ai mon temps pour aller vers vos idées.

    Merci à vous.
    Je ne manquerai pas de vous dire la bonne fin.

    Yann

    P.S.
    Dommage, qu'ici, les Classeurs joints ne soient pas les bienvenus.

    Vaut mieux un dessin qu'un long discours....Il est coutume de dire.
    Je pense que pour un classeur d'essai joint; il peut en être de même!
    Et qu'une adaptation des procédures par l' "Aidant" serait aussi efficace.

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

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Essai quand même de joindre un fichier, en espérant que celui ci puisse survivre au moins jusqu'à ce que je l'ouvre.
    Par contre je ne t'apporterais contribution que ce soir, je part demain pour la semaine et aurais guerre le loisir d'accéder au forum durant mon périple stagiesque
    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