Trier des colonnes de A/Z

Bonjour tous,

Je voudrais savoir si il y a une astuce possible pour trier des colonnes en A/Z, sans être obligé de passer par la boite de dial : étendre la sélection ou continuer avec la sélection en cour.

Pour être plus claire, j'ai un paquet de colonnes de nombres qui doivent être triés indépendamment les unes des autres ,du plus petit au plus grand ; alors, cocher à chaque colonne sur continuer avec la sélection en cours - puisque ça revient par défaut sur la première option- commence à me gonfler sérieusement.

Je ne suis pas douée avec Excel, je suis particulièrement une buse en macro, et passer à OFFICE 2007 alors que je ne maitrisais déjà pas 2003...font que je me voie dans l'obligation d''implorer votre bienveillance pour que ne pas un péter un câble devant une tâche trop simple mais tellement "chiante" que c'est dans ce cas précis que je fais le plus de bourdes.

Merci d'avance

Bonjour,

Le tout est de savoir si tu tries toujours sur la même colonne ou non. En te lisant, je pense que c'est non.

C'est probablement faisable par macro mais le mieux est que tu places un petit fichier (sans données confidentielles) avec un mot d'explication de manière à ce que l'on puisse reproduire ton souci et peut être te proposer une solution.

Amicalement

Dan

Grand merci de votre aide,

Vos neurones sont à n'en pas douter en meilleurs état que les miens, j'espère qu'une solution est envisageable.

https://www.excel-pratique.com/~files/doc/tri_colonnes.xlsm

Bonjour,

une macro a copier pour chaque colonne.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 8 And Target.Count = 1 Then

If WorksheetFunction.CountIf(Range("H:H"), Target.Value) > 1 Then

Application.EnableEvents = False

MsgBox "Hola! Mais t'es fou , j'y suis déja "

Target.Value = ""

Target.Select

Application.EnableEvents = True

Else

Range("H2:H" & Range("H65536").End(xlUp).Row).Sort Range("H2"), xlAscending, , , , , , xlNo

End If

End If

Il te suffit de changer le N° et la lettre de la colonne.

Peut être long a faire mais efficase.

A +

Merci henri mais je n'ai rien compris !

J'ai essayé de créer la macro à partir de ce que tu as inscrit, mais quand j'essaie de l'appliquer sans avoir changé quoi que ce soit d'abord pour piger ce que je dois adapter,

j'ai le message :Erreur de compilation à l'intérieur d'une procédure.

et pas le moindre indice quand à ce qui foire (d'habitude vba me surligne en jaune l'erreur, mais là rien)

Bonsoir,

avec ce code, lorsque tu cliques sur la première cellule de ta colonne, le tri se fait automatiquement

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Integer, DerLig As Long
If Target.Count = 1 And Target.Row = 1 Then
Col = Target.Column
DerLig = Cells(65000, Col).End(xlUp).Row
Range(Cells(1, Col), Cells(DerLig, Col)).Sort Key1:=Cells(1, Col), Order1:=xlAscending, Header:=xlGuess
End If
End Sub

Pour coller ce code, copie-le, puis clic droit sur le nom de l'onglet, et sélectionne "Visualiser le code"

Ensuite, tu colles

Bonjour,

Tu appuies sur Alt+F11 pour accéder a VBA ,la tu choisis la feuil1

puis dans la partie de droit ,tu colles le code.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then

[A2:A300].Sort key1:=[A2]

End If

If Target.Column = 2 Then

[B2:B300].Sort key1:=[B2]

End If

If Target.Column = 3 Then

[C2:C300].Sort key1:=[C2]

End If

End Sub

Ci joint un exemple

https://www.excel-pratique.com/~files/doc/ZePztClasseur12.xls

A +

à FÉLIX,

Merci infiniment tu m'as sauvé ma semaine, ça fonctionne nickel !

à Henri, désolée, je n'ai encore rien compris, ça ne marche pas ! je n'ai pas de message d'erreur, mais il ne se passe rien, aucun tri.

Te frise pas le chou, la méthode félix me suffit.

Grand merci à tout les deux.

À plus

Bonsoir à tous,

felix, ton code m'intéresse,

serait t-il possible de l'adapter pour trier un tableau entier, toujours en séléctionnant une

colonne (trier le tableau avec comme clé cette colonne) ?

j'ai eu besoin de çà récemment pour une appli.

amicalement

Claude.

Bonsoir, Claude

oui, tu remplaces :

Range(Cells(1, Col), Cells(DerLig, Col)).Sort

par :

Range("A1:B" & DerLig)

si ton tableau ne comportent que les colonnes A et B

Bonsoir felix,

c'est super !!

dans mon cas çà donne :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Integer
    If Target.Count = 1 And Target.Row = 1 Then
        Col = Target.Column
        Range("base").Sort Key1:=Cells(1, Col), Order1:=xlAscending, Header:=xlGuess
    End If
End Sub

merci, c'est très utile !

amicalement

Claude.

Re,

pour sécuriser un peu plus, tu peux rajouter une condition, c'est que la cellule où tu as cliquée soit bien dans ta zone nommée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Integer
    If Target.Count = 1 And Target.Row = 1 And Not Intersect(Target, [Base]) Is Nothing Then
        Col = Target.Column
        Range("base").Sort Key1:=Cells(1, Col), Order1:=xlAscending, Header:=xlGuess
    End If
End Sub

merci felix

à+....Claude.

Re le forum

Juste pour compresser le code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
  If .Count = 1 And .Row = 1 And Not Intersect(Target, [Base]) Is Nothing Then
    Range("Base").Sort Key1:=Cells(1, .Column), Order1:=xlAscending, Header:=xlGuess
  End If
End With
End Sub

Mytå

Rechercher des sujets similaires à "trier colonnes"