Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Trie alphabetique une zone de liste

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

Bonjour lestoiles1, Bruno,

La Zone de liste (contrôle de formulaire) se réfère à la plage A1:A4.

Pour faire ce que vous souhaitez utilisez une ListBox (contrôle ActiveX).

Nombreux exemples sur XLD.

A+
 
Bon voici le code pour une ListBox :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim a
a = Application.Transpose([A1].CurrentRegion.Columns(1)) 'vecteur ligne
tri a, 1, UBound(a)
ListBox1.List = a
End Sub

Sub tri(a, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
 

Pièces jointes

Bonjour à tous,

Si l'on tient à la Zone de liste (contrôle de formulaire) il faut en effet utiliser une colonne auxiliaire.

Mais là encore il vaut mieux une macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
Columns(1).Copy Columns(2) 'copier-coller
Columns(2).Hidden = True 'masque
Columns(2).Sort Columns(2), xlAscending, Header:=xlNo 'tri
Application.EnableEvents = True 'réactive les évènements
Shapes("Zone de liste 1").ControlFormat.ListFillRange = "$B$1:$B$" & Range("B" & Rows.Count).End(xlUp).Row
End Sub
A+
 

Pièces jointes

Merci bcp
 
Bonsoir lestoiles1,

Il y a plusieurs manières de créer un bug avec la macro du post #4 :

- effacement de la colonne A

- effacement de la cellule A2

- entrée d'une valeur d'erreur dans la plage A1:A4.

Si vous voulez faire n'importe quoi utilisez la solution du post #7.

A+
 
- 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

Discussions similaires

Réponses
12
Affichages
562
Réponses
11
Affichages
341
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…