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 :

Problème UserForm insertion d'image ou bouton [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 66
    Par défaut Problème UserForm insertion d'image ou bouton
    Bonjour,

    J'ai un formulaire avec des listbox multi colonnes. J'aimerais pouvoir insérer des images ou des boutons dans les deux premieres colonnes ma listbox mais je n'y arrive pas et je ne sais pas si c'est possible. Les listbox sont alimentés dynamiquement
    Nom : Sans titre.png
Affichages : 212
Taille : 7,8 Ko


    voici le code qui alimente les colonnes 3 et 4 et jaimerais pouvoir alimenter ici les images/boutons des colonnes 1 et 2
    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
     
    For Each CurTest In Test_Col.Collection
     
     
            With F_COMPO_CATEGORY_admin.FRM_COMPO_FONCTION.ZLM_COMPO_FONC
     
     
     
                '.List(j,0) =     // jaimerais pouvoir inserer ici des images/boutons
               ' .List(j,1) =
                .AddItem
                .List(j, 2) = CurTest.INT_idtest
                .List(j, 3) = CurTest.STR_valueref
                End With
            j = j + 1
     
     
        Next CurTest
    ces images auront pour but d'ouvrir la modification de la ligne selectionnée ou de supprimer la ligne, donc si vous avez d'autre idées de solutions pouvant répondre a ce problème je suis ouvert.

    Merci d'avance,

    JahExodus

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Intégrer un bouton dans une listbox en vba n'est pas faisable (à ma connaissance)

    1. Le plus sage est d'utiliser 2 boutons modifier et supprimer sur ton userform. l'utilisateur sélectionne la ligne désirée de ta listbox et clique sur le bouton modifier ou supprimer.


    2. Sinon, on pourra sans les boutons utiliser l’événement DblClick de ta listbox et à l'aide d'un msgbox orienter l'utilisateur à l'action de suppression et de modification. par exemple le msgbox OUI-NON-ANNULER et affecter chaque bouton à une action.

    3. On pourra même à l'aide des API personnaliser les boutons du msgbox (je la propose même si je ne suis pas fervent de telles usines à gaz)

    Code trouvé sur le net. Référence faite dans le commentaire du code

    Dans un module standard:
    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
    Option Explicit
    ' Module de code adapté des excellents travaux de Michel Pierron
    Private Declare Function SetWindowsHookEx& Lib "USER32" Alias "SetWindowsHookExA" (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&)
    Private Declare Function GetCurrentThreadId& Lib "kernel32" ()
    Private Declare Function CallNextHookEx& Lib "USER32" (ByVal hHook&, ByVal CodeNo&, ByVal wParam&, ByVal lParam&)
    Private Declare Function GetWindow& Lib "USER32" (ByVal hWnd&, ByVal wCmd&)
    Private Declare Function SetWindowText& Lib "USER32" Alias "SetWindowTextA" (ByVal hWnd&, ByVal lpString$)
    Private Declare Function UnhookWindowsHookEx& Lib "USER32" (ByVal hHook&)
    Private msgHook&
    Private TitreBtn$(1 To 2)
     
    Function MsgBoxPerso(Prompt$, Optional Title$, Optional Caption1$ = "Supprimer", Optional Caption2$ = "Modifier") As Byte
    Dim Rep%, hInstance&
    TitreBtn(1) = Caption1
    TitreBtn(2) = Caption2
    msgHook = SetWindowsHookEx(5, AddressOf CaptionBoutons, hInstance, GetCurrentThreadId())
    Rep = MsgBox(Prompt, vbYesNoCancel, Title)
    MsgBoxPerso = Application.Max(Rep - 5, 0)
    Erase TitreBtn
    End Function
     
    Private Function CaptionBoutons&(ByVal nCode&, ByVal wParam&, ByVal lParam&)
    Dim hWndChild&
    If nCode < 0 Then
        CaptionBoutons = CallNextHookEx(msgHook, nCode, wParam, lParam)
        Exit Function
    End If
    If nCode = 5 Then
        hWndChild = GetWindow(wParam, 5)
        Call SetWindowText(hWndChild, TitreBtn(1))
        hWndChild = GetWindow(hWndChild, 2)
        Call SetWindowText(hWndChild, TitreBtn(2))
        UnhookWindowsHookEx msgHook
    End If
    CaptionBoutons = False
    End Function
    Et dans le module de ton userform
    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
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Ref As String
    Dim S As Integer
     
    With Me.ListBox1
        Ref = .List(.ListIndex, 3)
        S = MsgBoxPerso("Modification ou suppression de " & Ref, Ref)
        If S = 1 Then
            'suppresion
            MsgBox Ref & " va être supprimée"
        ElseIf S = 2 Then
            'modification
            MsgBox Ref & " va être modifiée"
        End If
    End With
    End Sub
    PS. personnellement j'utiliserai le 1.

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    à noter qu'avec la solution 1, tu peux même t'offrir l'opportunité d'un traitement en lot

    via les deux propriétés suivantes de ton listbox :

    - obligatoire : Propriété Multiselect à placer à 1 - fmMultiSelectMulti (ou Extended si souhaité)
    - facultatif : Propriété ListStyle à placer à 1 - fmListStyleOption (qui permet d'avoir des cases à cocher à côté de chaque élément)

    tu pourras faire une sélection de plusieurs éléments, et ensuite tu appuies sur le bouton "SUPPRESSION" ou "VISUALISATION" dont tu faisais mention dans tes souhaits, et que mercatog t'as proposé

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 66
    Par défaut
    Merci pour vos réponses je vais essayer de mettre tout ca en place.
    J'ai pas l'habitude de faire du VBA alors je galère un peu

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 66
    Par défaut
    Bonjour,
    après reflexion, j'ai décidé de modifier le design de mon appli. Il a un désormais un seul bouton de modif qui va recuperer la valeur de la ligne sélectionné, c'est bien plus simple.

    merci à tous, je met le sujet en résolu

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

Discussions similaires

  1. Problème d'insertion d'images
    Par Abhorash dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 08/06/2007, 18h12
  2. Problème d'insertion d'image dans un tableau
    Par aminos40 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 01/06/2007, 09h54
  3. problème d'insertion d'images
    Par captainflex dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 20/05/2007, 23h20
  4. Problème d'insertion d'image dans une fenêtre.
    Par Antigonos Ier Gonatas dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/08/2006, 12h44
  5. [MySQL] Problème d'insertion d'image en base
    Par yokyok dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/05/2006, 11h01

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