• Initiateur de la discussion Initiateur de la discussion josé
  • 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 !

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
 
Bonjour josé, le forum

en pièce jointe ton fichier modifié.

j'ai essayé de commenter le code, mais je n'ai pas le talent de robert.

salut 🙂 [file name=essai4.zip size=20856]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai4.zip[/file]
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
661
Réponses
15
Affichages
784
Réponses
5
Affichages
910
Réponses
5
Affichages
573
Retour