Combobox & Listbox
Bonjour
encore besoin de votre aide
Malgré tous mes efforts pour adapter les autres fichiers laissé sur vos messages, je n'arrive pas à faire ce que je veux
A l'affichage de l'userform Myriam, j'aimerai que les 10 derniéres ligne de l'onglet Myriam s'affichent (affichage de la colonne A à G)
Ensuite via le combobox1 , possibilité d'un tri par date sur l'onglet Myriam
Mon plus gros souci c'est que les heures s'affiche en chiffre à virgule et non en mode hh:mm:ss
Merci d'avance
Febfeb
Bonjour,
Pour charger la ListBox et le ComboBox :
Private Sub UserForm_Initialize()
Dim Dico As Object
Dim Plage As Range
Dim Cle
Dim Tbl
Heure_entree = Sheets(2).Cells(2, 3).Value
Heure_Sortie = Sheets(2).Cells(2, 4).Value
With ActiveSheet: Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 7).End(xlUp)): End With
Me.TextBox1.Value = "Le " & Sheets(2).Cells(2, 1).Value & " entre " & Int(24 * Heure_entree) & "h" & Int(60 * (24 * Heure_entree - Int(24 * Heure_entree))) & " et " & Int(24 * Heure_Sortie) & "h" & Int(60 * (24 * Heure_Sortie - Int(24 * Heure_Sortie)))
Tbl = Plage
Set Dico = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(Tbl, 1)
Dico(Tbl(I, 1)) = "" 'dates
Tbl(I, 3) = Format(Tbl(I, 3), "hh:mm:ss")
Tbl(I, 4) = Format(Tbl(I, 4), "hh:mm:ss")
Tbl(I, 5) = Format(Tbl(I, 5), "hh:mm:ss")
Tbl(I, 6) = Format(Tbl(I, 6), "hh:mm:ss")
Tbl(I, 7) = Format(Tbl(I, 7), "hh:mm:ss")
Next I
ListBox2.ColumnCount = 7
ListBox2.List = Tbl
'charge le combo avec les dates
For Each Cle In Dico: ComboBox1.AddItem Cle: Next Cle
End SubEnsuite via le combobox1 , possibilité d'un tri par date sur l'onglet Myriam
Précises ce que tu veux car un tri est généralement croissant ou décroissant !
Bonjour
Merci Theze
c'est un tri croissant
Merci
la combobox ne trie pas auriez vous une solution ?
Merci
Je ne vois pas trop l'intérêt d'utiliser le ComboBox pour trier mais bon ?
Comme ta plage a des trous, il est préférable d'utiliser ceci pour définir la plage :
With ActiveSheet
Set Plage = .Range(.Cells(2, 1), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End Withje re poste le code avec cette modif. En bas, le code pour le tri :
Private Sub UserForm_Initialize()
Dim Dico As Object
Dim Plage As Range
Dim Cle
Dim Tbl
Heure_entree = Sheets(2).Cells(2, 3).Value
Heure_Sortie = Sheets(2).Cells(2, 4).Value
With ActiveSheet
Set Plage = .Range(.Cells(2, 1), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Me.TextBox1.Value = "Le " & Sheets(2).Cells(2, 1).Value & " entre " & Int(24 * Heure_entree) & "h" & Int(60 * (24 * Heure_entree - Int(24 * Heure_entree))) & " et " & Int(24 * Heure_Sortie) & "h" & Int(60 * (24 * Heure_Sortie - Int(24 * Heure_Sortie)))
Tbl = Plage
Set Dico = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Tbl, 1)
Dico(Tbl(i, 1)) = "" 'dates
Tbl(i, 3) = Format(Tbl(i, 3), "hh:mm:ss")
Tbl(i, 4) = Format(Tbl(i, 4), "hh:mm:ss")
Tbl(i, 5) = Format(Tbl(i, 5), "hh:mm:ss")
Tbl(i, 6) = Format(Tbl(i, 6), "hh:mm:ss")
Tbl(i, 7) = Format(Tbl(i, 7), "hh:mm:ss")
Next i
ListBox2.ColumnCount = 7
ListBox2.List = Tbl
'charge le combo avec les dates
For Each Cle In Dico: ComboBox1.AddItem Cle: Next Cle
End Sub
Private Sub ComboBox1_Click()
Dim Plage As Range
With ActiveSheet
Set Plage = .Range(.Cells(2, 1), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Plage.Sort Plage(1, 1), xlAscending
End Sub