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

NONO14

XLDnaute Occasionnel
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...

patricktoulon

XLDnaute Barbatruc
@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 ;)
 

TooFatBoy

XLDnaute Barbatruc
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
 

NONO14

XLDnaute Occasionnel
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.
 

ChTi160

XLDnaute Barbatruc
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:

NONO14

XLDnaute Occasionnel
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
 

Discussions similaires