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 :

Keybd_event vbkeysnapshot ne fonctionne qu'une seule fois [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut Keybd_event vbkeysnapshot ne fonctionne qu'une seule fois
    Bonjour à tous et merci de prendre le temps de réfléchir à mon problème,

    J'ai un formulaire représentant un calendrier dont les élément se déplace dynamiquement en fonction du mois désiré. Je souhaite effectué une capture d'écran du userform pour coller celle-ci dans un onglet où je pourrait rogner et retravaillé mon image.
    Je souhaiterais avoir plusieurs capture d'écran pour affiché plusieurs mois.

    Jusqu'ici rien de spécial, je fais mon code avec la commande keybd_event vbKeysnapshot 1,0&,0&
    1er mois désiré, pas de soucis (enfin presque pas. dans certain cas il me donne pas la dernière capture mais celle d'avant qui peu être du texte ou tout autre objet copier qui n'ont pas de rapport. (c'est un problème mais en vidant le presse papier avant l'ImprEcran sa marche)
    2eme mois désiré, la macro s'exécute cependant si je n'ai pas vidé le presse papier il me met la même image que la première et dans le presse papier il n'y a pas de nouvelle image. Si je vide le presse papier il ne fais une de capture écran et me dit que le presse papier et vide donc il n'y a pas d'image a copier.


    Pour chaque nouvelle fois ou je fais un imprime écran c'est la méme chose.
    Est-ce que par hasard le fait de copier dans un feuillet fait perdre le focus, ou faut-il réinitialisé keybd_event?
    Je viens de passé 3h à essayé plein de code, de manipulation et autre mais rien ne résous mon problème d'où mon appel à l'aide

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    En quoi crois-tu que le fonctionnement de fonctions de l'Api de Windows, qu'elles soient ou non appelées depuis VBA, soit un problème VBA ?
    Pour moi, ta question est fondamentalement autre qu'une question VBA.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Je met sa en problème vba car quand je le fais avec les touche sa fonctionne à merveille. Je cherche juste à automatisé le fonctionnement en vba.
    Je me trompe peu être mais dans tout les cas si quelqu'un a déjà eu le problème ou si quelqu'un a une idée je suis preneur

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    oui le probleme est connu tu tourne sur Windows 7 je suppose ?
    1. doevents
    2. et les 3 api clipboard (open,empty,close)
    3. tu peut régler aussi le problème en relâchant les touche simuler, 90% des utilisateurs de l api keybt event l'oubli


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     keybd_event le code de la touche ou sa constante, 0, 0, 0 ' on appuie sur la touche 
     
     keybd_event code de la touche , 0, &H2, 0 ' on relâche la touche
    sinon le clipboard ne se met pas a jour car occupé

    n'oubli pas aussi que tu paste sur un sheet il y a donc activation de la fenêtre Excel et tu n'a plus le focus sur l'usf il faut réactiver (show)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Merci pour cette réponse, c'est l'élément que je ne connaissait pas et qui me manqué ( ce que j'entendais par réinitialisé keybd_event).
    Voici mon code pour ceux qui peuvent en avoir besoin :
    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
     
    'Sauvegarde de la hauteur du formulaire et redimensionnement
    hauteurDefault = Me.Height
    Me.Height = action.Top + 5
     
    'Capture d'écran
    keybd_event vbKeySnapshot, 1, 0&, 0&
     DoEvents
    Application.Wait Now + TimeValue("0:00:01")
    keybd_event vbKeySnapshot, 0&, &H2, 0&
     DoEvents
     
    'Ajout de l'image au feuillet
    With Feuil15 'à adapter à la feuille que tu veux
        .Paste
    End With
     
    'Remise en forme du formulaire
    Me.Height = hauteurDefault
    le application.wait est obligatoire ^pur que le formulaire est le temps de se rafraichir après le dimensionnement.

    Encore merci pour votre aide, cordialement

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    oui dans beaucoup de procédure même avec les api clipboard il faut un temps des fois le doevents suffit
    pour les touches t'inquiet j'ai cherché sur la toile dans divers forum un qui aurait pensé a libérer la touche snapshot et bien je te rassure même les plus chevronnés ne le font pas
    c'est pourtant d'une évidences


    il viendrait a personne l'idée d'appuyer sur une touche en la laissant appuyée et taper sur d'autre touche sans jamais relâcher la touche 1 sauf pour les association shift et alt
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. pourquoi on error goto ne fonctionne qu'une seule fois ?
    Par alsimbad dans le forum Général VBA
    Réponses: 9
    Dernier message: 05/09/2014, 12h09
  2. Survol ne fonctionne qu'une seule fois sur IE
    Par elekaj34 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2009, 14h06
  3. [JSTL] foreach qui ne fonctionne qu'une seule fois
    Par Ouguiya dans le forum Taglibs
    Réponses: 16
    Dernier message: 02/08/2007, 16h17
  4. Réponses: 6
    Dernier message: 13/07/2007, 11h46
  5. [AJAX] [XMLHttp][IE]Fonction qui ne fonctionne qu'une seule fois
    Par narnou dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/07/2007, 11h16

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