Macro pour tri automatique

monsieurmarcadet

XLDnaute Junior
Bonjour,

Merci de m'acceuillir sur votre forum tout d'abord !

Voici ma question :

J'ai un fichier avec autant d'onglets que de mois dans l'année. J'ai créé un petit bouton associé à une macro sur chaque onglet afin de trier les cellules selon un ordre prédéfini et pour que la cellule séléctionné en fin de tri soit la dernière non vide.

Enfin... j'ai créé, soyons hônnete, j'ai utilisé la méthode simple qui consiste à enregisitrer une macro en temps réel...

Le problème c'est que j'ai donc 12 macros, une par onglet et que ça fini par être lourd ! (enfin j'imagine que c'est ça qui fait que mon fichier

J'aimerais un moyen pour garder mes 12 boutons, mais qu'il n'y ait plus qu'une seule macro de tri. Après, soit elle fait le tri sur l'onglet actif (l'idéal) soit elle tri tous les onglets en même (pas bien grave).

Un petit fichier test et surtout un grand merci d'avance.
 

Pièces jointes

  • tri macro.xlsx
    9.3 KB · Affichages: 69
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Macro pour tri automatique

évènement activate de la feuille appelle TriFeuille module1
code feuille ,clic droit onglet et visualiser code
 

Pièces jointes

  • triMacro.xls
    38 KB · Affichages: 71
  • triMacro.xls
    38 KB · Affichages: 59
  • triMacro.xls
    38 KB · Affichages: 71

monsieurmarcadet

XLDnaute Junior
Re : Macro pour tri automatique

Merci pour ta réponse !

J'avoue que je ne pige pas grand chose en Macro, mais je comprends tout de même que je dois insérer ton code dans chaque feuille et un autre dans le module.

Mais ce que je comprends pas, c'est comment s'active la macro ? Ou est le bouton ?

Merci !
 

monsieurmarcadet

XLDnaute Junior
Re : Macro pour tri automatique

OK, je viens de comprendre... A moi de créer le bouton et de lui affecter la macro.

Ca marche nickel ! Cependant, ça ne fait pas le tri dans l'ordre voulu, c'est à dire DATE, puis NATIONALITE, puis CLIENT. Le tri ne se fait que par la date. Pourquoi ?

Encore merci en tout cas pour la solution !
 

Bebere

XLDnaute Barbatruc
Re : Macro pour tri automatique

tu n'as pas besoin de bouton,comme dit plus haut c'est l'évènement activate de la feuille qui exécute le code
curseur sur le mot activate et touche F1 pour appeler l'aide et tu sauras tout
edit
pas fait attention,ce que tu demandes es tu sûr que c'est possible
essaye toi même et observe
si tu veux par nationalité il faut commencer par là
avec 2 tris tu devrais avoir assez
 
Dernière édition:

monsieurmarcadet

XLDnaute Junior
Re : Macro pour tri automatique

Bonjour et merci pour ta réponse.

Je comprends que le bouton ne soit pas nécessaire, mais j'en ai besoin. Je ne veux pas que le tri se fasse automatique, je veux que ça soit fait quand l'utilisateur le souhaite.

D'autre part, je ne comprends pas ton edit. Excel permet bien un tri à plusieurs niveau. Premier tri sur la date, puis en cas de date identique, tri sur la nationalité, puis en cas de date et de nationalité identique, tri sur le nom du client. Cela dit, seul les 2 premiers sont nécessaire.

Merci !
 

monsieurmarcadet

XLDnaute Junior
Re : Macro pour tri automatique

Bon, j'ai résolé une partie du probème. En partant de la solution de Bebere. J'ai changé

[B2:D1000].Sort key1:=[B2], key1:=[D2], key3:=[C2]

en

[B2:D1000].Sort key1:=[B2], key2:=[D2], key3:=[C2]

Ca fonctionne parfaitement mais.... juste pour le premier onglet !! Je n'y comprends rien... (faut dire... j'y connais pas grand chose en VBA).

Merci encore de votre aide.
 

monsieurmarcadet

XLDnaute Junior
Re : Macro pour tri automatique

Après moulte bidouilles, ça fonctionne enfin !

Sauf pour la sélection en fin de tri. En fait, avec cette macro, la cellule sélectionné et la dernière du tableau et non la première non vide. Et c'est bien normal, puisque je m'étais trompé dans mon énoncé initial !!

Donc que rajouter pour qu'à la fin du tri, la cellule sélectionné soit la PREMIERE non vide (ou la dernière de la plage trié).

Merci encore !
 

Bebere

XLDnaute Barbatruc
Re : Macro pour tri automatique

bonjour
le code que j'ai
Code:
Public Sub TriFeuille()
'à ajuster B2:D1000,d'après ta plage
    [B2:D1000].Sort [B2], key2:=[D2], key3:=[C2]
    [D65536].End(xlUp).Offset(1, 0).Activate'1ère cellule vide de la colonne D
End Sub
 

Discussions similaires

Réponses
18
Affichages
547
Réponses
12
Affichages
242
Réponses
8
Affichages
510

Statistiques des forums

Discussions
312 196
Messages
2 086 094
Membres
103 116
dernier inscrit
kutobi87