Affichage dans une combobox

chris_ij32

XLDnaute Nouveau
Bonjour,
Dans un formulaire j'ai 2 listes déroulantes, le choix de la première détermine la liste afficher dans la seconde.
La seconde a 3 colonnes et je souhaite les afficher dans ma liste déroulante.
Voici le code de la 1ère liste :
Private Sub ld_service_Change()
Select Case f_gestion_contacts.ld_service.Value
'Attention : sensibles à la casse
'Feuille paramètres : l_services
'ATELIER 'BE 'COMPTA FABR. 'R&D

Case "ATELIER"
f_gestion_contacts.ld_choix_tuteur.RowSource = "l_tut_atelier"
Case "BE"
f_gestion_contacts.ld_choix_tuteur.RowSource = "l_tut_be"
....

End Select
End Sub

Et le code de la seconde :
Private Sub ld_choix_tuteur_Change()

'affichage des prénom et nom dans la liste déroulante
ld_choix_tuteur.Value = ld_choix_tuteur.List(Ligne, 1) & " " & ld_choix_tuteur.List(Ligne, 2)

End Sub
Je vois bien que forcément il va me renvoyer la première ligne de la liste, comment changer le paramètre ligne pour renvoyer le tuteur choisi ? Je suppose qu'il faut travailler avec la propriété listindex mais je ne sais pas comment elle fonctionne.
Merci de m'aider
Chris
 

Pièces jointes

  • gestion_stagiaires_jour2.xls
    233 KB · Affichages: 99
G

Guest

Guest
Bonjour,

Les index d'item de listbox ou combobox commence à 0 jusqu'à .count-1
Voir l'aide excel sur ListIndex
Code:
Private Sub ld_choix_tuteur_Change()
    With ld_choix_tuteur
        If .ListIndex > -1 Then
            MsgBox .List(.ListIndex, 1) & " " & .List(.ListIndex, 2)
        End If
    End With
End Sub

A+
 

chris_ij32

XLDnaute Nouveau
Re : Re: Affichage dans une combobox

Bonjour,
Merci pour votre réponse.
J'y suis enfin arrivée en passant par des variables je m'en veux de ne pas y avoir pensé avant. Voici le code qui fonctionne enfin !
Private Sub ld_choix_tuteur_Change()

With ld_choix_tuteur
If .ListIndex > -1 Then
id_tuteur = .List(.ListIndex, 0)
prenom_tuteur = .List(.ListIndex, 1)
nom_tuteur = .List(.ListIndex, 2)
v_tuteur = id_tuteur & " " & prenom_tuteur & " " & nom_tuteur
ld_choix_tuteur.Value = v_tuteur
End If
End With

End Sub

Encore merci.
Cordialement
Chris
 
Dernière édition:
G

Guest

Guest
Re,

Pas trop compris ce que tu veux exactement!

Si tu veux que ta liste contienne les noms et prénoms dans une seule colonne, avec l'ID du tuteur en colonne 0:

Mettre la propriété ColumnCount à 2
Charger la Combobox comme ceci:
Code:
Private Sub ld_service_Change()
    Dim plg As Range
    Select Case f_gestion_contacts.ld_service.Value
        'Attention : sensibles à la casse
        'Feuille paramètres : l_services
        'ATELIER 'BE 'COMPTA  FABR. 'R&D
    Case "ATELIER"
        Set plg = Range("l_tut_atelier")
    Case "BE"
        Set plg = Range("l_tut_be")
    Case "COMPTA"
        Set plg = Range("l_tut_compta")
    Case "FABR."
        Set plg = Range("l_tut_fabr").Value
    Case "R&D"
        Set plg = Range("l_tut_rd").Value
    End Select
    With f_gestion_contacts.ld_choix_tuteur
        If Not plg Is Nothing Then
            Dim c As Range
            For Each c In plg.Columns(1).Cells
                .AddItem c
                .List(.ListCount - 1, 1) = c(1, 2) & " " & c(1, 3)
            Next
        End If
    End With
End Sub

Récupérer les informations:
Code:
Private Sub ld_choix_tuteur_Change()
    With ld_choix_tuteur
        If .ListIndex > -1 Then
            'affichage des prénom et nom dans la liste déroulante
            MsgBox "Id tuteur: " & .List(.ListIndex, 0) & vbCrLf & "Nom prénom: " & .List(.ListIndex, 1)
        End If
    End With
End Sub

P.S. mon exemple précédent répondait à ta demande de savoir comment utiliser ListIndex.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 350
Membres
103 194
dernier inscrit
rtison