Rechercher : dans
Par :

Tri automatique sur Excel

Dernière réponse le 13 aoû 2009 à 09:30:46 Julien, le 24 jan 2005 à 21:56:14 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un tableau sous excel dont les données sont alimentée par des formules.

J'aimerais savoir s'il est possible que le tri des des lignes soit réalisé automatiquement à la modification d'une valeur sans avoir à passer par Données/trier...

Merci.

1

gbinforme, le 25 jan 2005 à 00:00:26

Bonjour

C'est tout à fait possible avec une macro VBA.

Le tableau que tu veux trier, tu le nommes "infos"

la cellule titre de la 1ère colonne de tri est nommée "col1"

la cellule titre de la 2ème colonne de tri est nommée "col2"

la cellule titre de la 3ème colonne de tri est nommée "col3"

tous ces noms sont des exemples utilisés dans la macro bien sûr !


tu mets cette macro dans la feuille concernée et
dès qu'une cellule change de valeur le tableau est trié.

Private Sub Worksheet_Change(ByVal adrcel As Range)
Range("infos").Sort Key1:=Range("col1"), Order1:=xlAscending, _
Key2:=Range("col2") , Order2:=xlAscending, _
Key3:=Range("col3"), Order3:=xlAscending, _
Header:= xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub

il est bien évident que c'est un exemple qui fonctionne
mais il peut être amélioré en vérifiant que la cellule modifiée
fait bien partie du tableau par exemple.


toujours zen

Répondre à gbinforme

2

Julien, le 26 jan 2005 à 20:53:25

Merci bcp! Ca marche.

Faudra que j'aprenne à utiliser les macros un jour...

Répondre à Julien

3

Test, le 26 jan 2005 à 20:56:23

Je fais un test

Répondre à Test

4

youyou, le 11 oct 2007 à 09:05:19

Bonjour,
C top merci

Répondre à youyou

5

bremic83, le 8 mai 2009 à 18:41:20

Bonjour,je vois dans ce forum,la solution à un problème identique à celui que je cherche à résoudre,mais la solution proposée,je n'arrive pas à la mettre en application !
Il s'agit de la macro proposée par gbinforme ,le mardi 25 janvier 2005,figurant dans le forum "tri automatique sur Excel"
Pourrait-on me donner la marche à suivre pour appliquer cette macro sur Excel 2007 ?
Merçi à l'âme charitable qui voudra bien se pencher sur mon problème.

Répondre à bremic83

6

gbinforme, le 9 mai 2009 à 08:23:20

Bonjour bremic83,

Une macro "automatique" de tri doit être adaptée à ton classeur :

- que veux-tu trier ? une base de données structurée avec les rubriques en ligne 1 ?

- une partie de feuille de classeur ?

- sur combien de rubriques veux-tu trier ?

- as-tu déjà utilisé des macros ?
Toujours zen

Répondre à gbinforme

7

bremic83, le 9 mai 2009 à 09:14:06

Bonjour,gbinforme
Voiçi le problème:je veux trier les deux dernières colonnes d'un tableau.
L'avant-dernière totalise les sommes des précédentes,dont les données varient chaque jour.
La dernière contient les noms des lignes,et c'est cette liste de noms que je trie en ordre décroissant,selon les performances.
Manuellement,c'est facile,mais comme j'ai plusieurs tableaux à trier,celà devient vite fastidieux !
Je désire donc automatiser ce tri.
Je voudrais une méthode applicable à tous mes tableaux,qu'il s'agisse de macro ou de tout autre procédé.
Non,je n'ai jamais utilisé de macro,je débute en informatique.
Merçi de t'interesser à ma question,
A bientôt

Répondre à bremic83

8

bremic83, le 9 mai 2009 à 16:14:04

Voici un aperçu d'un tableau,en complément de mon message précédent,celà facilitera peut-être la compréhension du problème.
A plus,et encore merçi.


N J1 J2 J3 J4 J5 J6 Tot Clt

A 31 49 39 20 29 21 189 B
B 27 56 45 26 35 32 221 F
C 32 24 50 40 21 17 184 K
D 54 44 25 33 15 26 197 D
E 23 32 11 12 64 24 166 G
F 22 38 19 10 58 69 216 H
G 23 18 29 57 47 22 196 A
H 43 24 33 14 25 53 192 C
K 17 18 55 46 27 36 199 E
L 31 12 13 51 18 36 161 L

Répondre à bremic83

9

gbinforme, le 9 mai 2009 à 23:12:13

Bonjour

La dernière contient les noms des lignes,et c'est cette liste de noms que je trie en ordre décroissant,selon les performances

Je suppose que le tri décroissant se fait en fonction du total (colonne précédente) et non sur le nom car celui-ci ne doit pas varier ?
Toujours zen

Répondre à gbinforme

10

bremic83, le 10 mai 2009 à 09:16:54

Bonjour,
Exact,les données de la colonne en question ,sont les sommes des colonnes précédentes et ce sont elles qui
servent au classement des noms de la dernière colonne

Répondre à bremic83

11

gbinforme, le 10 mai 2009 à 17:35:30
  • +1

Bonjour

Je désire donc automatiser ce tri. Je voudrais une méthode applicable à tous mes tableaux

Pour cela je te propose une macro complémentaire de tri paramétrable pour n'importe quel tableau.

http://www.cijoint.fr/cjlink.php?file=cj200905/cijJzXhlw8.zi­p

Tu décompresses le fichier tri.xla dans ton dossier

C:\Documents and Settings\mon_nom\Application Data\Microsoft\Macros complémentaires

Ensuite tu lances excel et dans le menu outils / macros complémentaires, tu coches "tri" et ta macro de tri est installée.

Dans tous les classeurs que tu veux trier, tu copies dans la feuille concernée la macro événementielle suivante (mode d'emploi éventuel)

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim retour
    retour = Run("trier", 1, "G", "D")
End Sub

En remplaçant éventuellement :
- 1 par le numéro de ligne à partir duquel tu veux trier
- G par la colonne de tri
- D pour tri descendant par A pour tri Ascendant.

Dès que tu modifieras ton classeur, ton tableau concerné sera trié.
Toujours zen

Répondre à gbinforme

12

bremic83, le 10 mai 2009 à 19:40:52

Merci d'avoir répondu aussi vite.
Je vais essayer d'assimiler le potage,car je suis loin d'avoir pigé le processus.
Je vais me faire expliquer certains termes que je ne comprends pas et essayer.
Je te ferai savoir si j'y suis arrivé ou non,car,pour l'instant,Laure Manaudou et Alain Bernard sont loin de nager autant que moi !
Encore merçi, et à plus
Bremic83

Répondre à bremic83

40

axelanie, le 12 aoû 2009 à 17:40:04
  • +1

Bonjour gbinforme,
j'ai essayé ta macro et elle fonctionne très bien. Merci beaucoup. J'aimerais savoir si je suis capable de trier non pas pas descendant ni par ascendant, mais si je peux par cases non vides?

Merci beaucoup

Répondre à axelanie

41

 gbinforme, le 13 aoû 2009 à 09:30:46

Bonjour

Lorsque tu tries, les cellules vides sont mises en fin de tri et donc tes cases non vides arrivent en tête, dans l'ordre que tu choisis--

Toujours zen

Répondre à gbinforme

13

gbinforme, le 10 mai 2009 à 20:50:57

Bonjour

je suis loin d'avoir pigé le processus

Ce n'est pas forcément évident mais le principe est simple en mettant un module de tri paramétré au niveau d'excel et en interceptant l'événement d'une saisie dans une cellule pour le lancer depuis n'importe quel classeur.
Toujours zen

Répondre à gbinforme

14

bremic83, le 11 mai 2009 à 21:58:33

Bonsoir,
Désolé de te remettre à contribution,mais,je nage encore !
Je te rappelle que je suis un néophyte en informatique,je n'ai pas encore six mois de pratique,et tu sais,les vieux,ça ne pige pas vite,aussi,je viens te demander de me détailler la marche à suivre après l'enregistrement
du fichier tri.xla,car,je n'ai pas pu continuer,n'ayant pas trouvé :C:\Documents and Setting\ et la suite .
En plus, je voudrais savoir,s'il y a plusieurs tri à effectuer sur la même feuille,je dois,dans la macro événementielle,mettre plusieurs fois ,( autant de fois qu'il y a de tris ) les trois commandes ,1, "G", "D ",en changeant à chaque le n° de ligne et colonne ?
Encore merçi,et à bientôt.

Bremic83

Répondre à bremic83

15

gbinforme, le 11 mai 2009 à 23:56:13

Bonjour

je n'ai pas pu continuer,n'ayant pas trouvé :C:\Documents and Setting\ et la suite .

Tu es sous XP ou Vista ?

en changeant à chaque le n° de ligne

Le numéro de ligne doit rester le même car il n'est là que pour permettre de sauter les premières lignes si tu as un en-tête qui ne doit pas bouger et que le tableau à trier commence en ligne 8 par exemple. Tu peux aussi trier à partir de la colonne D (4) si tu précises le paramètre qui est implicitement 1 (A) :
retour = Run("trier", 1, "H", "D", 4)

Si par exemple tu as :
colonne A nom
colonne B prénom
colonne C age

Pour trier sur age , nom , prénom tu vas mettre les 3 lignes dans l'ordre inverse :

    retour = Run("trier", 1, "B", "A")
    retour = Run("trier", 1, "A", "A")
    retour = Run("trier", 1, "C", "D")

Ainsi ton tableau est trié colonne C puis A puis B
Toujours zen

Répondre à gbinforme

16

bremic83, le 12 mai 2009 à 09:19:56

Bonjour,
Je suis sous Vista

Bremic83

Répondre à bremic83

17

gbinforme, le 12 mai 2009 à 09:47:58

Bonjour

Dans ce cas il faut regarder dans c:\users\ etc

mais je n'ai pas vista.
Toujours zen

Répondre à gbinforme

18

Bremic83, le 13 mai 2009 à 11:19:06

Bonjour,
Je suis coincé pour ouvrir mon dossier "Documents and Settings",que j'ai enfin trouvé après bien des recherches,
lorsque je clique sur ouvrir,apparait un message d'erreur,:"Accès non autorisé",et je ne sais pas comment débloquer cette situation !
Connais-tu le problème,et si oui,as-tu une solution ?

Répondre à Bremic83

19

gbinforme, le 13 mai 2009 à 18:10:12

Bonjour

a priori il faut libérer les fichiers systèmes :
Démarrer/Ordinateur et avec la touche Alt. afficher la barre d’outils en haut de la fenêtre
Menu Outils/Options des dossiers et onglet Affichage
décoches les cases
- Masquer les extensions des fichiers dont le type est connu
- Masquer les fichiers protégés du système d’exploitation
Toujours zen

Répondre à gbinforme

20

Bremic83, le 13 mai 2009 à 18:32:43

Bravo tu as fait vite.
J'avais trouvé cette solution sur le forum,je l'ai essayée sans résultat,à chaque fois que je veux ouvrir le dossier,je fais apparaitre la même fenêtre " dossier indisponible accès refusé "
J'ai voulu en essayer une autre:" INPLACE $.~dossier TR " mais je n'arrive pas à trouver le mode d'emploi !
D'ailleurs,je ne sais pas si elle serait valable dans mon cas .
La galère continue .
Comment fais tu pour rester toujours zen ?
A plus !
Bremic83

Répondre à Bremic83

21

gbinforme, le 13 mai 2009 à 22:10:32
Répondre à gbinforme

22

Bremic83, le 14 mai 2009 à 09:06:14

Bonjour
Bravo,ça marche l'appropriation du dossier dont l'accès était refusé,merçi !
Un autre problème surgit: J'ai enregistré sur tes conseils,la macro tri.xla,mais maintenant,que je voudrais la transférer dans le dossier "Documents and Settings",une fenêtre d'erreur apparait qui me dit :"Windown ne trouve pas le dossier X vérifiez et recommencez "
J'ai déjà rencontré le même cas pour transférer un dossier dans excel et je n'ai toujours pas la solution.
En as-tu une ?

Répondre à Bremic83

23

gbinforme, le 15 mai 2009 à 16:05:33

Bonjour

je voudrais la transférer dans le dossier "Documents and Settings"

Attention il me semble que sur Vista ce répertoire est remplacé par "users"

Ensuite tu devrais trouver "Application Data\Microsoft\Macros complémentaires"
Toujours zen

Répondre à gbinforme

24

Bremic83, le 17 mai 2009 à 17:15:11

Bonjour,
la galère continue,je n'ai toujours pas compris pourquoi "Windows ne trouve pas mes dossiers "
J'ai essayé de télécharger www.cijoint.fr etc...directement dans le dossier concerné,ainsi que la macro
évennementielle que tu m'as indiquée,mais quand je veux exécuter: Message d'erreur suivant:
"paramètre de tri incorrect".
J'ai inversé le sens du tri,et obtenu la même réponse !
J'ai demandé autour de moi de l'aide,sans succès,car,dès que l'on parle de MACRO,c'est comme si on
semait la panique dans la basse-cour !
Je suis peut-être trop ambitieux pour un débutant ,je me tourne à nouveau vers toi, as tu des réponses ?
Encore merçi.

Bremic83

Répondre à Bremic83

25

gbinforme, le 17 mai 2009 à 18:25:44

Bonjour

quand je veux exécuter: Message d'erreur suivant:
"paramètre de tri incorrect".


Tu n'as pas dû lire totalement le message d'erreur car il manque le mot important du message.

Si tu en es arrivé là, c'est très bien car tu as installé ta macro complémentaire et il ne manque qu'une correction aux paramètres : ce devrait être simple.

Si tu pouvais faire un copier/coller de la macro de ton classeur, je pourrais d'aider plus facilement.

Je suis peut-être trop ambitieux pour un débutant

Sûrement pas car si tu n'avais pas aussi été un peu ambitieux pour marcher tu serais toujours assis : il faut bien se lancer et utiliser les outils disponibles surtout lorsqu'ils facilitent la tache.
Toujours zen

Répondre à gbinforme

26

Bremic83, le 17 mai 2009 à 19:15:45

Voiçi la copie de la macro évenementielle


' Macro1
' Tri auto
'
' Touche de raccourci du clavier: Ctrl+Maj+M
'Private Sub Worksheet_Change(ByVal Target As Range)
Dim retour
retour = Run("trier", 1, "E", " D")
End Sub

A plus

Bremic83

Répondre à Bremic83

27

Bremic83, le 17 mai 2009 à 19:28:01

En effet,j'ai oublié un mot dans le message d'erreur,le voiçi dans son intégralité:

"Paramètre sens de tri incorrect"

Bremic83

Répondre à Bremic83

28

gbinforme, le 17 mai 2009 à 21:23:16

Bonjour

Dans ton paramètre sens de tri, il y a un espace avant le D et comme la macro attend A ou D...

C'est pas méchant, cela va fonctionner mais il faudrait enlever l'apostrophe devant "private".
Toujours zen

Répondre à gbinforme

29

Bremic83, le 17 mai 2009 à 23:15:53

J'ai corrigé selon tes instructions,maintenant,le message d'erreur est:
"Erreur de compilation Sub End attendu"
Or Sub End figure bien à la fin de la macro,et je ne sais pas quoi faire !
Bonsoir,demain,il fera jour

Bremic83

Répondre à Bremic83

30

gbinforme, le 18 mai 2009 à 08:40:14

Bonjour

Dans la feuille VBA que tu veux trier, tu ne dois avoir que ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
     Dim retour
     retour = Run("trier", 1, "E", "D")
End Sub 

J'ai l'impression que tu as mis ton code dans un module au milieu d'une autre macro.
Toujours zen

Répondre à gbinforme

31

Bremic83, le 18 mai 2009 à 12:21:00

Bonjour,
J'ai tout supprimé,puis tout recommencé l'enregistrement.
Je me suis retrouvé avec le même message d'erreur au sujet de "End Sub"
Décourageant !
A plus !

Bremic83

Répondre à Bremic83

32

Bremic83, le 18 mai 2009 à 20:54:58

Bonsoir,
Je dois avoir un don pour faire apparaitre les fenêtres d'erreur,après avoir tout repris à zéro,j'ai voulu faire une pause,et enregistrer ce que j'avais déjà préparé.
Voiçi la réponse:
"Les fonctions suivantes ne peuvent pas être enregistrées dans les classeurs sans macro
.Projet V B
et je suis invité à cliquer sur "non"et sélectionner un type de fichier prenant en compte les macros,dans la liste type de fichiers"
Je n'ai aucune idée de ce que celà veut dire !
Peux tu m'éclairer ?
(Je n'ose plus toucher à ce fichier,de peur de tout effacer de mon travail de la journée !)

Bremic83

Répondre à Bremic83

33

gbinforme, le 18 mai 2009 à 21:30:09

Bonjour

Tu es probablement avec 2007 et donc avec le bouton Office en haut à gauche, il faut choisir enregistrer sous puis choisir "classeur excel prenant en charge les macros" et tu auras un fichier .xlsm

Dès que tu introduis les macros il faut cette extension.
Toujours zen

Répondre à gbinforme

34

Bremic83, le 18 mai 2009 à 23:34:27

OK tu es mon sauveur,MERCI

A plus.

Bremic83

Répondre à Bremic83

35

StDark, le 10 jui 2009 à 19:37:16

Bonjour,

Je reviens sur le tri automatique dans Excel 2007.

Cela fonctionne bien, toutefois le problème que je rencontre est que je ne veux trier une copie de mon tableau d'origine. Mon tableau à trier contient donc les références aux cellules où sont saisies les données, et là la macro ne fonctionne plus.

Exemple :

Valeurs saisies en A1:A30
Cellules G1:G30 égale la plage A1:30 et je veux trier la plage G1:G30

La seule solution que j'entrevois serait de rajouter au début de cette macro, un copier/coller des valeurs de ma colonne A en colonne G, mais je ne sais pas le faire en VBA.

Après il y a peut-être une meilleure solution ?

Répondre à StDark