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 :

Afficher une image dans UserForm en fonction de la TextBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut Afficher une image dans UserForm en fonction de la TextBox
    Bonjour à tous,

    Je cherche à faire un UserForm où la personne entre un numéro composé de lettre, et en fonction de cette référence, une image s'affiche. J'ai toutes mes images dans un onglet, chacune associées à un numéro.

    Je joints un exemple pour que cela soit plus clair.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par kalista Voir le message
    Je joints un exemple pour que cela soit plus clair.
    Je joints un lien pour que cela soit plus clair : https://www.developpez.net/forums/d8...s-discussions/

    Je cherche à faire un UserForm où la personne entre un numéro composé de lettre, et en fonction de cette référence, une image s'affiche. J'ai toutes mes images dans un onglet, chacune associées à un numéro.
    Comment connaitre la relation entre le code entré et le nom de l'objet image ?

  3. #3
    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 c'est plus compliqué que cela
    tes imags dans le sheets sont des pictures im faut faire une copie en bipmat ou !! metafile
    tu a deux solutions soit utiliser un chart et faire une copie ,paste et export dans un fichier et loader le fichier dans le .picture du control image (activX)
    soit u

    tiliser les api et la il y a encore deux sous solutions

    je t'en donne une qui est relativement simple

    vire tout code de ton userform !!!
    et met 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
    21
    22
    23
    24
    25
    26
    27
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
    Private Declare Function CopyEnhMetaFileA Lib "gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
    Private Declare Function DeleteEnhMetaFile Lib "gdi32" (ByVal hDC As Long) As Long
     
    Private Sub CommandButton1_Click()
        Set cel = Sheets("Base de donnée").Range("A:A").Find(UCase(TextBox1.Text), , lookat:=xlWhole)
        If Not cel Is Nothing Then
            For Each SHAP In Sheets("Base de donnée").Shapes
                If SHAP.TopLeftCell.Row = cel.Row Then CopiePhoto SHAP
            Next
        End If
    End Sub
    Sub test()
    End Sub
    Sub CopiePhoto(Source)
        Dim FicTmp As String
        FicTmp = Environ("userprofile") & "\DeskTop\image.wmf"
        Source.CopyPicture    'xlScreen, xlBitmap
        OpenClipboard 0
        DeleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), FicTmp)
        CloseClipboard
        'On Error Resume Next
        Image1.Picture = LoadPicture(FicTmp)
    '  Kill FicTmp
    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

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut
    Merci beaucoup pour cette aide.
    Cela ne fonctionne pas pour l'instant, je cherche encore pourquoi.

    A quoi renvoi le chemin "\DeskTop\image.wmf" svp ?

    Citation Envoyé par patricktoulon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub CopiePhoto(Source)
        Dim FicTmp As String
        FicTmp = Environ("userprofile") & "\DeskTop\image.wmf"
        Source.CopyPicture    'xlScreen, xlBitmap
        OpenClipboard 0
        DeleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), FicTmp)
        CloseClipboard
        'On Error Resume Next
        Image1.Picture = LoadPicture(FicTmp)
    '  Kill FicTmp
    End Sub

  5. #5
    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
    2016 il va te falloir adapter les api en 64 bits si tu es en excel 64 bit

    le chemin avec environ et desktop c'est le bureau
    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

  6. #6
    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
    desktop ? -->> pas nécessairement !

    EDIT : chez moi mon bureau a ce chemin :
    C:\Documents and Settings\......nom .....\Bureau

    Environ étant trop limité, je l'extrais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oWSHShell As Object
        Set oWSHShell = CreateObject("WScript.Shell")
        chemin_bureau = oWSHShell.SpecialFolders("Desktop")

  7. #7
    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
    bonjour
    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
    #If win64 Then    'si windows 64
        #If VBA7 Then    'si excel 64 dans windows 64
            Private Declare ptrsafe Function CloseClipboard Lib "user32" () As Long
            Private Declare ptrsafe Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
            Private Declare ptrsafe Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
            Private Declare ptrsafe Function CopyEnhMetaFileA Lib "gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
            Private Declare ptrsafe Function DeleteEnhMetaFile Lib "gdi32" (ByVal hDC As Long) As Long
        #Else    'si excel 32 dans windows 64
            Private Declare Function CloseClipboard Lib "user32" () As Long
            Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
            Private Declare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
            Private Declare Function CopyEnhMetaFileA Lib "gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
            Private Declare Function DeleteEnhMetaFile Lib "gdi32" (ByVal hDC As Long) As Long
        #End If
    #Else    'si windows 32 et excel 32
        Private Declare Function CloseClipboard Lib "user32" () As Long
        Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
        Private Declare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
        Private Declare Function CopyEnhMetaFileA Lib "gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
        Private Declare Function DeleteEnhMetaFile Lib "gdi32" (ByVal hDC As Long) As Long
    #End If
     
    Private Sub CommandButton1_Click()
        Set cel = Sheets("Base de donnée").Range("A:A").Find(UCase(TextBox1.Text), lookat:=xlWhole)
        If Not cel Is Nothing Then
            For Each SHAP In Sheets("Base de donnée").Shapes
                If SHAP.TopLeftCell.Row = cel.Row Then CopiePhoto SHAP
            Next
        End If
    End Sub
    Sub test()
    End Sub
    Sub CopiePhoto(Source)
        Dim FicTmp As String
        'FicTmp = Environ("userprofile") & "\DeskTop\image.wmf"
        'ou
        With CreateObject("WScript.Shell"): FicTmp = .SpecialFolders("Desktop") & "\image.wmf": End With
        '
        Source.CopyPicture
        OpenClipboard 0: DeleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), FicTmp): CloseClipboard
        If Dir(FicTmp) <> "" Then Image1.Picture = LoadPicture(FicTmp)
        Kill FicTmp
    End Sub
    fichier a tester comme tel
    Fichiers attachés Fichiers attachés
    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/10/2018, 18h58
  2. Réponses: 6
    Dernier message: 12/02/2017, 13h17
  3. [XL-2003] Afficher une image dans un userform
    Par pbarbe11 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2013, 16h02
  4. [XL-2007] afficher une image dans une cellule en fonction d'un résultat
    Par elsabio dans le forum Excel
    Réponses: 3
    Dernier message: 19/04/2010, 22h07
  5. Afficher une image dans un état
    Par Invité1 dans le forum IHM
    Réponses: 8
    Dernier message: 23/09/2009, 14h59

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