Microsoft 365 Mettre la 4ème colonne d'une ListBox au format [h]:mm

  • Initiateur de la discussion Initiateur de la discussion NONO14
  • Date de début Date de début

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 !

NONO14

XLDnaute Impliqué
Bonjour à toutes et à tous,

Dans mon application j'ai supprimé la ComboBox (ceux qui me suivent comprendront - https://excel-downloads.com/threads...omboBox à 3 colonnes avec les données d'un TS ) et je l'ai remplacé par une ListBox.
La ListBox est bien alimentée selon le code ci-joint, cependant je souhaiterai que la 4ème colonne soit au format [h]:mm.
Avec le code ci-joint, la 4ème colonne donne le résultat ":12".
Qu'ai-je fais qui ne convienne pas ?
Merci par avance pour votre aide
1728460462766.png

VB:
Sub RempliListBox()
Dim Ws As Worksheet
Dim Tbl As ListObject
Dim I As Long, Col As Long
Dim Data As Variant

'Définir la feuille de calcul et le tableau structuré
    Set Ws = Sheets("Liste_agents")
    Set Tbl = Ws.ListObjects("t_Noms")
   
'On récupére les données du TS
    Data = Tbl.DataBodyRange.Value
   
   
    With UfGestTemps.MultiPage1.Pages(0)

'On définie le nbre de colonnes de la ListBox
    .Lst_Employ.ColumnCount = 4

'On remplit la ListeBox avec les données du TS
    For I = 1 To UBound(Data, 1)
        .Lst_Employ.AddItem
            For Col = 1 To 4

'On formate la 4ème colonne au format "[h]:mm"
                If Col = 4 Then
                    .Lst_Employ.List(I - 1, Col - 1) = Format(Data(I, Col), "[h]:mm")
                Else
                    .Lst_Employ.List(I - 1, Col - 1) = Data(I, Col)
                End If
            Next Col
    Next I
End With
End Sub
 
Dernière édition:
Solution
Bonjour,

Ta macro de #1 :
VB:
Sub RempliListBox()
'
Dim Ws As Worksheet
Dim Tbl As ListObject
Dim I As Long, Col As Long
Dim Data As Variant

    ' Définir la feuille de calcul et le tableau structuré
    Set Ws = Sheets("Liste_agents")
    Set Tbl = Ws.ListObjects("t_Noms")

    ' On récupére les données du TS
    Data = Tbl.DataBodyRange.Value

    With UfGestTemps.MultiPage1.Pages(0)

        ' On définie le nbre de colonnes de la ListBox
        .Lst_Employ.ColumnCount = 4

        ' On remplit la ListBox avec les données du TS
        For I = 1 To UBound(Data, 1)
            .Lst_Employ.AddItem
            For Col = 1 To 4
                ' On formate la 4e colonne au format "[h]:mm"
                If Col = 4 Then...
@vgendron
25:33:55 n'est pas un timecode
c'est une représentation graphique que l'on peut apparenter a un certains temps écoulé
qui n'est valable que pour le lecteur qui l'interprétera
d'ailleurs même 24:00:00 n'existe pas le max c'est 23:59:59.999999
et si c’était vraiment des données de temps écoulé, elles seraient déjà au format dans les cellules et donc du texte et donc par définition au bon format dans la colonne de la listbox 😉
 
Bonjour,

Ta macro de #1 :
VB:
Sub RempliListBox()
'
Dim Ws As Worksheet
Dim Tbl As ListObject
Dim I As Long, Col As Long
Dim Data As Variant

    ' Définir la feuille de calcul et le tableau structuré
    Set Ws = Sheets("Liste_agents")
    Set Tbl = Ws.ListObjects("t_Noms")

    ' On récupére les données du TS
    Data = Tbl.DataBodyRange.Value

    With UfGestTemps.MultiPage1.Pages(0)

        ' On définie le nbre de colonnes de la ListBox
        .Lst_Employ.ColumnCount = 4

        ' On remplit la ListBox avec les données du TS
        For I = 1 To UBound(Data, 1)
            .Lst_Employ.AddItem
            For Col = 1 To 4
                ' On formate la 4e colonne au format "[h]:mm"
                If Col = 4 Then
                    .Lst_Employ.List(I - 1, Col - 1) = Format(Data(I, Col), "[h]:mm")
                Else
                    .Lst_Employ.List(I - 1, Col - 1) = Data(I, Col)
                End If
            Next Col
        Next I

    End With

End Sub

doit pouvoir être remplacée par celle-ci :
VB:
Sub RempliListBox()
    UfGestTemps.MultiPage1.Pages(0).Lst_Employ.RowSource = Range("t_Noms").Address(, , , True)
End Sub
 
Bonjour,

Ta macro de #1 :
VB:
Sub RempliListBox()
'
Dim Ws As Worksheet
Dim Tbl As ListObject
Dim I As Long, Col As Long
Dim Data As Variant

    ' Définir la feuille de calcul et le tableau structuré
    Set Ws = Sheets("Liste_agents")
    Set Tbl = Ws.ListObjects("t_Noms")

    ' On récupére les données du TS
    Data = Tbl.DataBodyRange.Value

    With UfGestTemps.MultiPage1.Pages(0)

        ' On définie le nbre de colonnes de la ListBox
        .Lst_Employ.ColumnCount = 4

        ' On remplit la ListBox avec les données du TS
        For I = 1 To UBound(Data, 1)
            .Lst_Employ.AddItem
            For Col = 1 To 4
                ' On formate la 4e colonne au format "[h]:mm"
                If Col = 4 Then
                    .Lst_Employ.List(I - 1, Col - 1) = Format(Data(I, Col), "[h]:mm")
                Else
                    .Lst_Employ.List(I - 1, Col - 1) = Data(I, Col)
                End If
            Next Col
        Next I

    End With

End Sub

doit pouvoir être remplacée par celle-ci :
VB:
Sub RempliListBox()
    UfGestTemps.MultiPage1.Pages(0).Lst_Employ.RowSource = Range("t_Noms").Address(, , , True)
End Sub
Avec ce code, je n'ai que la 1ère colonne de mon tableau "t_Noms" dans ma ListBox.
 
bonjour le Fil
ou alors tu mets la propriété "ColumnWidths" en forme directement dans la Procédure
VB:
Sub RempliListBox()
 With  UfGestTemps.MultiPage1.Pages(0).Lst_Employ
         .Columncount=4
         .ColumnWidths="150;150;150;150" 'pour l'exemple (non testé)
         .List = Range("t_Noms").Value
 end with
End Sub
Dans ce Fil j'avais utilisé cette méthode
Le Lien : #36
Edit : a quoi te sert le CodeAgent qui s'affiche partout ?
Bonne fin de Journée
Jean marie
 
Dernière édition:
bonjour le Fil
ou alors tu mets la propriété "ColumnWidths" en forme directement dans la Procédure
VB:
Sub RempliListBox()
 With  UfGestTemps.MultiPage1.Pages(0).Lst_Employ
         .Columncount=4
         .ColumnWidths="150;150;150;150" 'pour l'exemple (non testé)
         .List = Range("t_Noms").Value
 end with
End Sub
Dans ce Fil j'avais utilisé cette méthode
Le Lien : #36
Bonne fin de Journée
Jean marie
Oui effectivement. Mais j'ai utilisé directement les propriétés de la ListBox
Encore merci
 
- 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

T
Réponses
8
Affichages
1 K
Retour