Microsoft 365 Click sur ListBox pour récupérer info

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pompaero

XLDnaute Impliqué
Bonjour le forum,

J'explique mon souci... dans le fichier joint en feuil2 "Fiche valider cp" je dois clicker sur le ListBox afin de récupérer les infos qui renseignent la fiche en feuil2.
Le code
VB:
Private Sub ListBoxcp_Click()
est créé mais n'est plus adapté par rapport aux autres codes en place et je n'arrive pas à l'adapter.
Quelqu'un peut-il m'aider, merci.

Cdlt
pompaero
 

Pièces jointes

Si si j'ai continué, mais pas de retour
Ah, pardon, je ne pensais pas que tu voulais continuer avec le pensement que j'avais tenté. Je croyais que tu voulais tout réécrire.
Nul doute que quelqu'un de plus doué que moi va te faire ça. 😉

nous pouvons retourné sur le précèdent si cela convient ?
Maintenant que c'est ouvert ici, on doit pouvoir y rester.
Je donne tout de même le lien vers le fil précédent au cas où ça puisse être utile :
 
Bonsoir

'Explication

VB:
Private Sub ListBoxcp_Click()
Ligne = Me.ListBoxcp.ListIndex
' Information  
MsgBox "Nombres de lignes Excel : --->> " & Me.ListBoxcp.ListCount  
MsgBox "Nombres de Colonne Excel : --->> " & Me.ListBoxcp.ColumnCount  
MsgBox "Lignes de """"ListBoxcp"""" : --->> " & Me.ListBoxcp.ListIndex  
MsgBox "Lignes 1 Colonne 1 : --->> " & ListBoxcp.List(Ligne, 0) & " --->> Nom"  
MsgBox "Lignes 1 Colonne 2 : --->> " & ListBoxcp.List(Ligne, 1) & " --->> Prénom"end sub
End Sub

En fait :
  • Une ListBox en VBA est un contrôle Windows, et non une plage Excel.
  • Elle gère ses éléments dans un tableau interne en mémoire, totalement indépendant d’Excel.
  • Ce tableau commence toujours à 0, aussi bien pour les lignes (ListIndex) que pour les colonnes (List(..., ...)).
  • Donc :
    • ListIndex = numéro de la ligne sélectionnée (0 = première ligne, 1 = deuxième, etc.)
    • ListCount = nombre total de lignes (mais attention, si tu as 10 lignes, la dernière a l’index 9)
    • ColumnCount = nombre de colonnes (pareil, la première colonne est à l’index 0)
    • List(Ligne, Colonne) = lecture du tableau interne (exemple : (0,0) = 1ère ligne, 1ère colonne).
 
Dernière édition:
Je te propose ceci :
VB:
Private Sub ListBoxcp_Click()
'
    Ligne = Me.ListBoxcp.ListIndex

    Range("B11").Value = ListBoxcp.List(Ligne, 1)   ' Nom
    Range("E11").Value = ListBoxcp.List(Ligne, 2)   ' Prénom
    Range("D13").Value = ListBoxcp.List(Ligne, 3)   ' Date d'entrée dans l'entreprise
    Range("D15").Value = ListBoxcp.List(Ligne, 4)   ' Date de la demande

    Select Case ListBoxcp.List(Ligne, 5)
    Case "CONGES PAYES"
        Me.OptionButton1 = True
    Case "RTT"
        Me.OptionButton2 = True
    Case "EVENEMENT FAMILIAL (à préciser et joindre justificatif)"
        Me.OptionButton3 = True
    Case "CONGES SANS SOLDE"
        Me.OptionButton4 = True
    Case "AUTRE"
        Me.OptionButton5 = True
        Range("C27").Value = ListBoxcp.List(Ligne, 6)
    End Select

    Range("C31").Value = ListBoxcp.List(Ligne, 7)   ' Date de début
    Range("C33").Value = ListBoxcp.List(Ligne, 8)   ' Date de fin
    Range("E33").Value = ListBoxcp.List(Ligne, 9)   ' Nombre de jours

' ***************************************************************************
' Peut-être revoir cette partie et utliser les boutons radio                *
' ----------------------------------------------------------                *
'    Range("A44").Value = ListBoxcp.List(Ligne, 11)  ' Choix du responsable *
' ***************************************************************************

    Range("E44").Value = ListBoxcp.List(Ligne, 12)  ' Nom cds
    Range("H44").Value = ListBoxcp.List(Ligne, 13)  ' Date cds
    Range("E46").Value = ListBoxcp.List(Ligne, 14)  ' Motif refus

    If IsDate(ListBoxcp.List(Ligne, 15)) Then Range("F48").Value = Format(ListBoxcp.List(Ligne, 15), "dd/mm/yyyy")    ' Du
    If IsDate(ListBoxcp.List(Ligne, 16)) Then Range("H48").Value = Format(ListBoxcp.List(Ligne, 16), "dd/mm/yyyy")    ' Au
    Range("E50").Value = ListBoxcp.List(Ligne, 17)  ' Signature cds

    Range("A1").Select

End Sub

Sans oublier ceci :
VB:
Sub charge_listboxcp()
'
Dim TabGen(), TabTemp()

    nbCol = Range("t_formulaire_1").ListObject.ListColumns.Count + 1 + Range("t_formulaire_2").ListObject.ListColumns.Count
    nbLig = Range("t_formulaire_1").ListObject.ListRows.Count
    TabGen = Range("t_formulaire_1").Resize(nbLig, nbCol).Value

    If Not Range("t_formulaire_1").ListObject.DataBodyRange Is Nothing Then
        ' Boucle pour chaque ligne du tableau
        x = 0
        For Lgn = 1 To UBound(TabGen, 1)
            If (Not IsEmpty(TabGen(Lgn, 12))) And (Year(TabGen(Lgn, 8)) = Range("O4") Or Year(TabGen(Lgn, 9)) = Range("O4")) Then
                Select Case TabGen(Lgn, 12)
                Case 1
                    TabGen(Lgn, 12) = "Acceptée"
                Case 2
                    TabGen(Lgn, 12) = "Date refusée"
                Case 3
                    TabGen(Lgn, 12) = "Reportée"
                End Select
                x = x + 1
                ReDim Preserve TabTemp(1 To 20, 1 To x)
                For i = 1 To nbCol
                    TabTemp(i, x) = TabGen(Lgn, i)
                Next i
                TabTemp(11, x) = Lgn    ' Ligne source
            End If
        Next Lgn
    End If

    With Sheets("Fiche valider cp")
        With .ListBoxcp
            .ColumnCount = 20
            .ColumnWidths = "0;80;80;0;70;85;95;50;50;0;0;50;0;0;0;0;0;0;0;0"
            .Width = 600
            .Clear
            Select Case x
            Case 0
                TabTemp = Array()
            Case 1
                .Column = TabTemp
            Case Else
                .List = Application.Transpose(TabTemp)
            End Select
        End With
    End With

End Sub


⚠️ Je te laisse vérifier si les dates sont correctes ou si les quantièmes et mois sont inversés.
 

Pièces jointes

Dernière édition:
Bonjour au fil,

Laurent850, merci pour tes explications et de l'interet porté à ce post.

TooFatBoy, Je vais testé ton code, voir is cela fonctionne.

Perso, je pensais prendre modele sur le code créé par Chit160 sur la Feuil3 "Validation cds"
VB:
Public Sub LstBx_1_Click()
puis le compléter avec la partie du 2ème tableau Feuil1 "Retour formulaire demande cp".
Je n'y suis pas arrivé !!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
164
Réponses
3
Affichages
483
Réponses
8
Affichages
2 K
Réponses
4
Affichages
869
Retour