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 :

VBA automatisation impression / send keys


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut VBA automatisation impression / send keys
    bonjour à tous,

    J'ai exploré pas mal de solutions pour automatiser une suite d'impressions sous excel avec vba. l'objet Printer étant absent de VBA je me rabbats sur une solution send keys (bancale?) pour arriver à mes fins.

    Ma suite d'instruction pour reproduire le comportement de l'utilisateur consiste à modifier sur chaque feuille les propriétés de l'imprimante puis de sélectionner l'ensemble de mes feuilles et de lancer l'impression.
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Feuil1.Select
    'ouverture des propriétés de l'imprimante
    Application.SendKeys "%fi%nk%r%+/"
    'sélection d'un ensemble de paramètres d'impression sauvegardés
    Application.SendKeys "{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}"
    'validation
    Application.SendKeys "~"
    Application.SendKeys "~"
    'sortie des propriétés de l'imprimante
    Application.SendKeys "{ESCAPE}"

    Cette première partie de code fonctionne, SAUF si je duplique le code pour la page suivante, et ce dès l'instruction de sélection de celle-ci:

    En espérant avoir été clair, merci d'avance pour les réponses que vous pourrez apporter.

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    en principe, une fois les commandes d'imprimante changées...
    elle restent en mémoire ( pour la session tout au moins )
    donc, les send keys que tu envoie sont relatives au premier changement effectués

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut
    Une fois les propriétés d'imprimantes changées, celle-ci restent effectivement en mémoire si j'execute mon code seulement pour ma feuille 1.

    La particularité d'excel est de pouvoir parametrer de cette façon chacune des feuilles du classeur avec une configuration différente. Ce qui fonctionne d'ailleurs manuellement.

    Je répete que mon code fonctionne pour la première page si je ne selectionne pas ma feuil2 après ma série de send keys.

    De cette façon, à chaque changement de feuille pour y appliquer des changements, seul les changements sur la dernière feuille sont pris en compte. (ce qui n'est pas le comportement hors macro)

    Mon problème n'est donc apparamment pas sur la gestion de l'imprimante mais sur l'utilisation des send keys en eux meme.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Pourquoi alors ne pas utiliser la fonction EnumJobs de la librairie winspool.drv de l'Api de Windows (en corrélation avec la fonction OpenPrinter de la même librairie pour avoir le handle nécessaire de l'imprimante) et ne traiter chacune des impressions que lorsque le spooler ne contient plus l'impression précédente ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut
    Merci de cette réponse qui me ferait surement apprendre beaucoup si je l'exploitais à fond (puisqu'il faudrait déjà que je cherche la signification et l'usage de tous les termes que je ne connais pas encore ! .
    Cependant je crois détecter que ce que tu me proposes implique une impression feuille à feuille qui ne convient pas à la suite de mon problème, puisque parmi mes fameux paramètres d'impression je dois gérer du recto verso.
    j'ai bien pensé à coller toutes les cellules à imprimer en recto verso sur une meme feuille, seulement, l'une des feuilles est en format paysage et l'autre en portrait.
    Vous comprendrez qu'avant de modifier toute mise en page pour simplifier surement le problème, je cherche à automatiser quelque chose qui fonctionne jusqu'à maintenant de façon manuelle.

Discussions similaires

  1. [VBA] Automatiser l'impression d'un état Access dans un fichier
    Par olaf_le_preux dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/02/2007, 12h49
  2. [VBA-E] Impression de certaines feuilles d'un classeur
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/03/2006, 17h19
  3. Envoyer du texte dans une autre application (ou send key)
    Par Coussati dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 10/02/2006, 15h26
  4. [VBA-E]Impression d'une form
    Par preverse dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/10/2005, 14h19
  5. [VBA-E] Impression page paire sur plusieurs onglets
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 17/02/2005, 15h19

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