Créer macro pour ordre croissant/décroissant

Bonjour,

Je suis newbie un peu dans Excel pour ce qui est des commandes macros et j'ai besoin de votre aide .

J'ai un doc avec une liste d'éléments contenant plusieurs colonnes d'info pour chaque ligne (exemple, une liste d'entreprises avec plusieurs infos supplémentaires dans des colonnes) et je veux offrir la possibilité aux gens de trier une colonne par ordre croissant/décroissant. Tout le contenu de la feuille doit suivre l'ordre croissant/décroissant de la colonne choisie pour ne pas mêler les infos de chaque ligne. Chaque colonne (pertinente) aurait aussi cette fonction donc plusieurs colonnes.

Je connais la méthode de tri d'Excel mais je veux que ce soit plus simple pour un utilisateur de pouvoir trier lui-même, la colonne de son choix, pour voir le contenu s'adapter à son besoin. Ça peut être un bouton qui fait l'ordre croissant/décroissant ou un liste déroulante avec les 2 choix, pour chaque colonne..

Avez-vous une idée? Je n'ai que excel 2002 et idéalement (ahah), il faudrait que ça compatible pour plus récent aussi (j'en demande hein...)

Merci de votre aide très précieuse ! Bonne journée!

Bonsoir et bienvenu(e)

Double-clic dans la colonne, en ligne 1, que l'on veut trier

Le 1er double-clic tri dans le sens A->Z et colorise la 1ère cellule de la colonne

Le 2ème double-clic tri dans le sens Z->A et ôte la couleur dans la 1ère cellule de la colonne

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Sens As Integer

  If Target.Row = 1 Then
    Cancel = True
    If Target.Interior.Color = vbCyan Then
      Target.Interior.ColorIndex = xlNone
      Sens = xlDescending
    Else
      Sens = xlAscending
    End If
    Cells(1, Target.Column).CurrentRegion.Sort key1:=Cells(1, Target.Column), order1:=Sens, dataoption1:=xlSortNormal, header:=xlNo
    If Sens = xlAscending Then
      Cells(1, Target.Column).Interior.Color = vbCyan
    End If

  End If
End Sub

Important les colonnes n'ont pas d'entête : si c'est le cas il faut modifier la macro

    Cells(1, Target.Column).CurrentRegion.Sort key1:=Cells(1, Target.Column), order1:=Sens, dataoption1:=xlSortNormal, header:=xlYes

Important bis : Il ne doit pas y avoir de ligne/colonne vide dans ton tableau

Bonjour,

Merci de votre aide.

J'essaie de l'appliquer mais ça ne fonctionne pas. Je n'ai certainement pas la bonne méthode.

J'ai cliqué dans la cellule de la ligne 1 de la première colonne, fait "outils > macro > visual basic editor", j'ai inséré un module et j'ai copier le code dedans et donné un nom.

Ma macro n'est pas visible dans la liste de macros. Si j'enlève la partie entre parenthèses lors de la déclaration, je la vois par contre.

Pouvez-vous me préciser comment l'appliquer?

Un gros merci..

Bonsoir

Désolé j'aurai dû te l'expliquer

Tu fais un clic droit sur l'onglet de la feuille (celle qui contient tes données) ---> Visualiser le code

Dans la fenêtre qui s'ouvre tu y colle la macro

C'est tout

Ensuite pour la faire fonctionner il suffit de double-cliquer dans la colonne, dans la ligne 1, que tu veux trier

C'est super, ça marche, merci bcp! Est-ce possible de le mettre au "clic" au lieu du double-clic? Je ne vois pas dans le code ce qui gère ça.

Dernière question, je vais mettre une image avec 2 flèches pour que visuellement, on sache qu'on peut cliquer dans la cellule. En bonus, est-ce possible de changer une image dans la cellule selon le clic? Genre un icone avec des flèches comme on affiche quand on est sur le web pour trier des colonnes de tableau. Si trié croissant, c'est image avec flèche du haut état différent, si décroisant, c'est flèche du bas différente.

Simple question pour peaufiner le visu.

Encore merci!!

Bonjour

Si j'ai choisi le double-clic c'est pour souligner une action voulue, le clic est peut-être par inadvertance ou simplement en déplaçant le curseur par les flèches

Ensuite pour les images (ce que j'ai remplacé par une couleur) cela va être plus compliqué de gérer tout ça et tu vas avoir des images dans toutes tes colonnes et franchement suis pas chaud pour ça

Mais si une personne veut le faire, libre à elle

effectivement, le double-clic est plus sécuritaire et fonctionnel pour le clavier mais ce sera plus simple avec un clic seulement puisque les gens ne sauront pas qu'ils doivent cliquer 2 fois dans la cellule. C'est un comportement plus connu sur le Web. Je vais mettre un petit icone (sans en changer l'état, merci pour l'info) pour montrer qu'ils peuvent faire une action. Comment est-ce possible de mettre le code pour un clic seulement? J'aimerais le tester.

encore merci!

Bonjour

A tester

super merci! Très gentil! Bonne journée!

Bonjour,

Je relance ce sujet suite à un nouveau besoin.

J'aimerais pouvoir attribuer cette idée de macro à une image qui serait présente sur une colonne précise et non à toutes les colonnes.

Le code initialement donné dans cet échange permet de trier toutes les données au clic d'une colonnes de la d'entête mais en poussant le besoin un peu plus, je me rends compte que ce ne sont pas toutes les colonnes qui doivent avoir cette fonction. Donc pour identifier quelles colonnes, j'aimerais mettre une petite image dans la cellule et y attribuer une macro permettant l'ordre croissant/décroissant des lignes en fonction du contenu de cette colonne.

Quelqu'un a une idée?

Merci!

Bonsoir

Est ce sont les mêmes images ?

Pour avoir une idée il faudrait voir un fichier avec ces images

Bonjour!

Oui c'est la même image ajoutée à différentes colonnes.

Voir en pièce jointe.

J'ai laissé le code actuellement proposé donc ça fonctionne au double-clic de la colonne. L'idéal serait que le code fonctionne sur les images intégrées dans quelques colonnes.

Merci de votre aide!

38test2.zip (27.00 Ko)

Bonsoir

Tu laisses la même image

Comment faire la différence entre A-->Z et Z-->A

est-ce que l'image peut savoir la couleur active de fond de la cellule dans laquelle elle est?

faut-il intégrer des images avec des noms différents?

Bonsoir

onlyge a écrit :

est-ce que l'image peut savoir la couleur active de fond de la cellule dans laquelle elle est?

Oui elle peut

onlyge a écrit :

faut-il intégrer des images avec des noms différents?

Pas important

Je te fais une macro en vérifiant le fond de la cellule

Wait .....

A tester

super merci! Je regarde le tout! C'est parfait, c'est ce que je voulais. Ça me permet en même temps de voir les différences entre les classes privés ou non. Je vais pouvoir creuser plus loin pour d'autres besoins par moi-même ! Merci encore de votre aide!

Rechercher des sujets similaires à "creer macro ordre croissant decroissant"