J
josé
Guest
bonjour à tous
j'ai cette macro ( fourni par Hervé et fort bien commenté par Robert) qui me permet d'incrémenté une lisbox.
je voudrais arriver à trier la listbox2 alphabétiquement. Est ce réalisable ou dois je revoir la conception au départ de cette listebox?
Public Sub initlistbox2() 'procédure
Dim i As Integer 'déclare la variable i
Dim dataperso As Collection 'deçlare la variable dataperso
Set dataperso = New Collection 'définit la variable dataperso
If ListBox1.ListIndex = -1 Then 'si aucune année n'est sélectionnée
MsgBox ' Merci de sélectionner une année.' 'message
Exit Sub 'sort de la procédure
End If
If ListBox4.ListIndex = -1 Then 'si aucune couleur n'est sélectionnée
MsgBox ' Merci de sélectionner une couleur.' 'message
Exit Sub 'sort de la procédure
End If
ListBox2.Clear 'vide la ListBox2
'**************************************************************************************************
'Ajout des membres à la Collection dataperso
'quand dans une collection on ajoute un membre qui existe déjà cela provoque une erreur
'à cause de la clé : 'Ctr(tablo(i,3))' pour la collection dataperso
'le 'On Error Resume Next' garantit l'absence de doublon
'il est est donc utile de passer par une Collection pour remplir une ComboBox/ListBox sans doublons
'**************************************************************************************************
For i = 1 To UBound(tablo) 'boucle sur les lignes de tablo
'condition : si l'année en colonne A est la même que celle de la ListBox1 et
' que la couleur correspondante est la même que la ListBox4
If CStr(Year(tablo(i, 1))) = ListBox1 And tablo(i, 2) = ListBox4 Then
On Error Resume Next 'gestion des erreurs (évite les doublons)
'ajoute le membre Colonne 3 (Personnels) à la collection dataperso
dataperso.Add tablo(i, 3), CStr(tablo(i, 3))
On Error GoTo 0 'annule la gestion des erreurs
End If 'fin de la condition
Next i 'prochane ligne de tablo
'remplissage de la Listox2 'Personnels'
For i = 1 To dataperso.Count 'boucle sur tous les membres de la collection dataperso
ListBox2.AddItem dataperso(i) 'ajoute le membre à la ListBox2
Next i 'prochain membre de la collection dataperso
End Sub
MERCI pour vos conseils
j'ai cette macro ( fourni par Hervé et fort bien commenté par Robert) qui me permet d'incrémenté une lisbox.
je voudrais arriver à trier la listbox2 alphabétiquement. Est ce réalisable ou dois je revoir la conception au départ de cette listebox?
Public Sub initlistbox2() 'procédure
Dim i As Integer 'déclare la variable i
Dim dataperso As Collection 'deçlare la variable dataperso
Set dataperso = New Collection 'définit la variable dataperso
If ListBox1.ListIndex = -1 Then 'si aucune année n'est sélectionnée
MsgBox ' Merci de sélectionner une année.' 'message
Exit Sub 'sort de la procédure
End If
If ListBox4.ListIndex = -1 Then 'si aucune couleur n'est sélectionnée
MsgBox ' Merci de sélectionner une couleur.' 'message
Exit Sub 'sort de la procédure
End If
ListBox2.Clear 'vide la ListBox2
'**************************************************************************************************
'Ajout des membres à la Collection dataperso
'quand dans une collection on ajoute un membre qui existe déjà cela provoque une erreur
'à cause de la clé : 'Ctr(tablo(i,3))' pour la collection dataperso
'le 'On Error Resume Next' garantit l'absence de doublon
'il est est donc utile de passer par une Collection pour remplir une ComboBox/ListBox sans doublons
'**************************************************************************************************
For i = 1 To UBound(tablo) 'boucle sur les lignes de tablo
'condition : si l'année en colonne A est la même que celle de la ListBox1 et
' que la couleur correspondante est la même que la ListBox4
If CStr(Year(tablo(i, 1))) = ListBox1 And tablo(i, 2) = ListBox4 Then
On Error Resume Next 'gestion des erreurs (évite les doublons)
'ajoute le membre Colonne 3 (Personnels) à la collection dataperso
dataperso.Add tablo(i, 3), CStr(tablo(i, 3))
On Error GoTo 0 'annule la gestion des erreurs
End If 'fin de la condition
Next i 'prochane ligne de tablo
'remplissage de la Listox2 'Personnels'
For i = 1 To dataperso.Count 'boucle sur tous les membres de la collection dataperso
ListBox2.AddItem dataperso(i) 'ajoute le membre à la ListBox2
Next i 'prochain membre de la collection dataperso
End Sub
MERCI pour vos conseils