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 :

Sauvegarder image userform [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut Sauvegarder image userform
    Bonjour,
    un sujet où je ne trouve pas de réponses récentes et fonctionnelles.

    J'ai un userform complexe dont je souhaite faire une copie ecran et sauvegarder comme image.(ensuite je l'enverrai par mail)

    J'ai essayé une solution proposée par
    https://www.developpez.net/forums/d1...serform-image/

    qui consiste à activer le print screen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Keybd_Event VK_SNAPSHOT, 0, 0, 0   'press PrintScrn
    Cependant il faut que l'utilisateur zone le USF.

    J'ai donc essayé d'émuler le Alt+ PrintScreen d'après un post de 2007
    http://blog.csdn.net/northwolves/art...etails/1811295
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Altscan = MapVirtualKey(VK_MENU, 0) 'Alt+PrintScrn
        Keybd_Event VK_MENU, Altscan, 0, 0       'press Alt
        Keybd_Event VK_SNAPSHOT, 0, 0, 0   'press PrintScrn
    Mais la commande VK_MENU n'est pas reconnue dans ma librairie user32 (erreur 453.)

    De plus dans les deux cas, comme on émule le clavier, les utilitaires actifs ( chez nous Greenshot ) prennent la main et demandent de valider la copie vers print, clipboard etc ....

    J'ai essayé d'utiliser la fonction de copie d'une plage d'écran dans une feuille graph, mais bien sûr cela ne capture pas l'USF.

    Qu'elle autre piste me reste-t-il ?

    merci pour vos conseils
    Denis

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Je ne m'y connais pas beaucoup en VBA, mais j'ai trouvé ceci, peut-être vous aidera t-il à résoudre votre problème. Je n'ai pas testé ce code.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Option Explicit
    Private Declare Sub keybd_event Lib "user32" ( _
        ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)
    Private Sub CommandButton1_Click()
    Dim monImage As String
    Dim Sh As Shape
    'Définit le nom et le lieu de stockage de l'image
     monImage = ActiveWorkbook.Path & "\monimage" & ".jpg"
     keybd_event vbKeySnapshot, 1, 0&, 0&
        DoEvents
        Range("A1").Select
        ActiveSheet.Paste
        'on rogne l'image: à toi de régler suivant ta convenance à l'aide de l'enregistreur de macro
        With Selection
          .ShapeRange.ScaleWidth 0.68, msoFalse, msoScaleFromTopLeft
          .ShapeRange.ScaleHeight 0.68, msoFalse, msoScaleFromTopLeft
         End With
         'Récupère la dernière forme de la feuille
        Set Sh = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
        'Colle l'image dans un graphique
        With ActiveSheet.ChartObjects.Add(0, 0, Sh.Width, Sh.Height).Chart
            .Paste
            'Sauvegarde l'image du graphique au format jpg
            .Export monImage, "JPG"
        End With
        'Supprime le graphique et la forme.
        With ActiveSheet
            .ChartObjects(ActiveSheet.ChartObjects.Count).Delete
            .Shapes(ActiveSheet.Shapes.Count).Delete
        End With
        Application.ScreenUpdating = True
             MsgBox "L'image est sauvegardée dans le dossier du classeur."
    End Sub

  3. #3
    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, à voir si curieux :


  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
    re
    le probleme avec ca c'est pas vraiment la similation des touches ni la desactivation du pavé numerique mais plutôt le clipboard
    en effet si ton clipborad est vide et que tu simule la touche alt et screenshot le premier coup et en erreur
    tout de suite après tu recommence par exemple mais sur une autre userform
    et bien je te le donne dans le mille tu a la capture du premier
    je me suis dis OK on vide le clip bord pour avoir vraiment la derniere capture faite manque de pot on retombe dans l'erreur du debut

    et a ce jour je n'ai pas trouvé de solution personne d'ailleurs a moins que le petit malin qui a trouvé ne soit pas partageur
    en attendant
    ma version sans api
    met un bouton dans ton usf

    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
    Private Sub CommandButton1_Click()
        Dim nb As Byte
     
            Application.SendKeys "(%{1068})"    'touche alt +  impression ecran
            DoEvents
            Application.SendKeys "{NUMLOCK}"    'on remet le pavé numerique
            ActiveSheet.Paste
            'Définit le 1er shape de la feuille
            Set Sh = ActiveSheet.Shapes(ShapesCount)
            Sh.CopyPicture    'copie le shape
            'crée un graphique
            With ActiveSheet.ChartObjects.Add(0, 0, Sh.Width, Sh.Height).Chart
                .Paste    'colle l'image dans graphique
                ' enregistre le graphique au format gif
                .Export "C:\Users\" & Environ("username") & "\Desktop\capture.jpg", "JPG"
            End With
            nb = ActiveSheet.ChartObjects.Count
            'supprime le graphique
            ActiveSheet.ChartObjects(nb).Delete
            Sh.Delete
     
    End Sub
    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
    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
    a moins que le petit malin qui a trouvé ne soit pas partageur
    ou plus simplement qu'il estime que telle n'est pas là la vocation d'un tableur.
    Alors ? -->> je ne crois pas que l'on ait à sauvegarder l'image d'un userform de manière fréquente -->> alors on le fait manuellement
    Sauf si ... sauf si l'on utilise le userform comme "facture", "devis", etc ... (un "document", quoi ... un machin pixelisé ...). Ce qui est proscrit par ma religion.

  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
    libre a toi d'en penser ce que tu veux jacques
    si le demandeur veut faire comme ca c'est son problème
    perso j'ai trouvé d'autre solution avec les api et sans simuler de touche et entre parenthèses c'est du HD
    je ferais une contrib avec un exemple propre a ce sujet comme ca se sera fait
    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. probleme sauvegarde image
    Par clod83 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/12/2007, 11h43
  2. [BufferedImage] Redimensionner / Sauvegarder image sur disque
    Par nicolas.pied dans le forum Multimédia
    Réponses: 1
    Dernier message: 17/04/2007, 02h54
  3. sauvegarde image dans un dossier
    Par charaf dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/03/2007, 11h17
  4. [Image]sauvegarde image redimensionnée
    Par taka10 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/04/2006, 10h58
  5. StretchDIBits et sauvegarde image affichée en BPM
    Par chris_wafer_2001 dans le forum BPM
    Réponses: 5
    Dernier message: 25/12/2005, 11h09

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