Classer un tableau par colonnes

Dans le tableau suivant, j'aimerai, lorsque je clic sur une des colonnes, que les lignes se classent elles-mêmes dans l'ordre croissant.

Je recherche la manière la plus simple de le faire. Je me suis très peu aventuré dans les macros jusqu'ici, alors si la personne qui répond à ce topic peut tenter de m'aider à comprendre tout ça, je suis preneur !

Merci à vous et bonne soirée.

15test.xlsx (48.53 Ko)

Bonjour,

Pas facile de répondre à une question comme ça d'autant que tu as un MAC !
C'est d'autant plus difficile que pour pouvoir faire ça il faut déjà avoir un tableau à trier !

Or sur aucune des feuilles je n'ai vu de tableau triable ? C'est un fouillis de données inorganisées... séparées par des lignes vides ou des cellules fusionnées.

Bref rien vu de triable :

J'ai modifié un peu la feuille 1 pour te donner un exemple de tri possible. Il suffit de cliquer sur la première ligne pour trier tout le tableau sur la colonne cliquée.

10testris.xlsm (54.64 Ko)

Nota j'ai modifié la cellule A1 car un tableau doit avoir un en-tête à chaque ligne et nommé le tableau Data dans le Gestionnaire de noms.

A+

Cela correspond simplement à ce dont j'ai besoin.

Peux-tu m'expliquer la démarche à suivre pour reproduire cela dans d'autres classeurs s'il te plait ?

Bonjour,

Bien définir les tableaux cibles : Un en-tête dans chaque colonne,

Pas de colonne vide.

Pas de ligne vide

Pas de cellules fusionnées

Eviter les données parasites voisines du tableau et au moins une lignes et un colonne d'écart si présence données parasites.

Les données parasites peuvent créer des plantages de la macro (plantage visible si tu cliques sur la cellule Q1)

Ce plantage est du au fait que la macro n'est pas trop optimisé.

Pour éviter ce plantage utiliser la macro modifiée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, isect
If Target.Row = 1 Then
   If Target.Count = 1 Then
      Set isect = Application.Intersect(Range("Data"), Target)
      If Not isect Is Nothing Then
          i = Target.Column
         TriS i
     End If
   End If
End If
End Sub
Private Sub TriS(i)
    Range("Data").Sort key1:=Cells(1, i), order1:=xlAscending, Header:=xlYes
End Sub

Nota : La macro peut et doit être adaptée de nombreuses manières (indescriptibles ici) en fonction des données...

(Par exemple Tri inverse ou différent selon les colonnes ou inhibé sur colonnes indésirables...)

A+

Rechercher des sujets similaires à "classer tableau colonnes"