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
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
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...
J'avais bien compris, mais tu vois que maintenant ça ne sert plus à rien puisque quel que soit le nombre de caractères saisis la touche <Entrée> est équivalente au clic sur le bouton [Valider].
Maintenant que les problèmes du UserForm de saisie du MdP sont résolus, je me permet une nouvelle digression.
VB:
'Initialisation de la date du début de la semaine en partant du lundi
If Weekday(Now, 2) <> 1 Then
Me.Tbx_DebSem = Format(Now - Weekday(Now + 2) + 1, "dd/mm/yyyy")
Else
Me.Tbx_DebSem = Format(Now, "dd/mm/yyyy")
End If
Me.Tbx_NumSem = WorksheetFunction.IsoWeekNum(Now)
Me.Tbx_FinSem = CDate(Me.Tbx_DebSem) + 6
Pourquoi le lundi traite-t-on le premier jour de la semaine différemment ???
Aujourd'hui la macro me donne "04/10/2024" (qui est un vendredi) dans Me.Tbx_DebSem. Drôle de début de semaine.
A toi de voir si tu veux utiliser ou non cette modification :
VB:
' Initialisation de la date du début de la semaine en partant du lundi
Me.Tbx_DebSem = Format(Now - Weekday(Now, 2) + 1, "dd/mm/yyyy")
' On calcule la fin de la semaine
Me.Tbx_FinSem = Format(Now - Weekday(Now, 2) + 7, "dd/mm/yyyy")
' On calcule le numéro ISO de la semaine
Me.Tbx_NumSem = WorksheetFunction.IsoWeekNum(Now)
Ca me donne "07/10/2024" (qui est un lundi) dans Me.Tbx_DebSem.
J'ai bien recopié ton code et ça fonctionne bien mieux que mon code.
J'ai juste modifié le format date de ces deux lignes :
Encore un grand merci
VB:
' Initialisation de la date du début de la semaine en partant du lundi
Me.Tbx_DebSem = Format(Now - Weekday(Now, 2) + 1, "dddd-dd-mm-yyyy")
' On calcule la fin de la semaine
Me.Tbx_FinSem = Format(Now - Weekday(Now, 2) + 7, "dddd-dd-mm-yyyy")
J'avais bien compris, mais tu vois que maintenant ça ne sert plus à rien puisque quel que soit le nombre de caractères saisis la touche <Entrée> est équivalente au clic sur le bouton [Valider].
C'est juste pour voir le résultat de la proposition, il n'y a rien figé puisque je n'ai pas terminé. On me propose une idée alors par respect je l'essaye, ce n'est pas pour cela que je vais l'adopter définitivement.
C'est juste pour voir le résultat de la proposition, il n'y a rien figé puisque je n'ai pas terminé. On me propose une idée alors par respect je l'essaye, ce n'est pas pour cela que je vais l'adopter définitivement.