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-E] coller contenu Presse-papiers dans controle Image


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [VBA-E] coller contenu Presse-papiers dans controle Image
    Sous Excel XP je dispose d'un UserForm contenant un contrôle "Image"

    En mode Editeur VB je peux coller, par CTRL+V, le contenu du presse papier dans la propriété "Picture" du contrôle "Image". J'obtiens alors (Metafichier) dans cette propriété et j'ai bien l'image du presse papiers qui s'affiche dans le contrôle.

    Par contre je ne connais pas la syntaxe VBA pour faire la même chose.

    Comme je n'ai pas l'image sur le dsque sous forme de fichier, je ne peux pas utiliser "LoadPicture".

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Avant de faire CTRL+V, tu as du faire CTRL+C, non? Et où se trouvait ton image à ce moment? Tu ne peux pas l'enregistrer quelquepart sur ton disque dur?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse rapide.

    En fait , l'image provient du "CopyPicture" d'une plage de cellules qui n'est jamais au même endroit. Je détermine la plage de cellules et la feuille concernée avec une procédure dans laquelle je fais le "CopyPicture"

    J'aimerai éviter d'aller écrire sur le disque, mais si c'est la seule façon alors OK.

    Mais là encore je ne sais pas comment générer un fichier à partir du contenu du presse papier en VBA Excel.

    D'avance merci

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Fais une recherche avancée sur ce forum VB. On a eu ce genre de question il n'y a pas trop longtemps. Je crois bien qu'il y a une jolie API qui gère la presse-papier.
    Mais je ne l'ai jamais fait, alors je ne peux pas t'aider plus que ça...

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour Mr63 , bonjour Megaxel

    tu peux utiliser la methode PastePicture de Stephen Bullen

    http://www.bmsltd.ie/Excel/SBXLPage.asp


    Sinon voici une autre solution un peu plus tirée par les cheveux , qui permet (en VBA Excel) d'enregistrer l'image contenue dans le presse papier sur le disque dur .
    tu pourras donc ensuite faire le LoadPicture


    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Explicit 
    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 collage_Image_V02() 
    Dim x As Byte 
    Dim Sh As Shape 
    Dim monImage As String 
     
    x = ActiveSheet.Shapes.Count 
     
    Application.ScreenUpdating = False 
    ActiveSheet.Range("A1").Select 
    ActiveSheet.Paste 
     
    'verifie si le collage effectué correspond à une image 
    If x = ActiveSheet.Shapes.Count Then 
    Application.ScreenUpdating = True 
    MsgBox "Opération annulée" 
    Exit Sub 
     
    Else 
     
    Set Sh = ActiveSheet.Shapes(ActiveSheet.Shapes.Count) 
    monImage = "C:\monImage.jpg" 
     
    With ActiveSheet.ChartObjects.Add(0, 0, Sh.Width, Sh.Height).Chart 
    .Paste 
    .Export monImage, "JPG" 
    End With 
     
    With ActiveSheet 
    .ChartObjects(ActiveSheet.ChartObjects.Count).Delete 
    .Shapes(ActiveSheet.Shapes.Count).Delete 
    End With 
     
    Application.ScreenUpdating = True 
     
    '------------------------------------------------------------- 
    'option pour les utilisateur de Windows XP : 
    'visualisation de l'image créée avec avec l'apercu images_telecopies Windows 
    'testé avec Excel2002 et WinXP 
     
    'ShellExecute 0, "open", "rundll32.exe", _ 
    "C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & monImage, 0, 1 
    'End If 
     
    End Sub


    bonne soiree
    michel

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

Discussions similaires

  1. coller le contenu du presse papier dans une variable
    Par lucassou dans le forum VB.NET
    Réponses: 5
    Dernier message: 01/05/2015, 09h38
  2. Réponses: 3
    Dernier message: 26/11/2013, 20h12
  3. [OL-2003] Coller le presse papier dans mail
    Par LuckyLuke56 dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 23/11/2009, 09h36
  4. [AC-2007] Coller le contenu du presse-papier dans un champ spécifique d'une table
    Par toumack dans le forum Modélisation
    Réponses: 3
    Dernier message: 26/05/2009, 14h49

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