Posez votre question Signaler

Tri automatique sur Excel [Résolu]

Julien - Dernière réponse le 3 mai 2013 à 18:27
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.
Lire la suite 
Réponse
+7
moins plus
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
Julien- 26 janv. 2005 à 20:53
Merci bcp! Ca marche.

Faudra que j'aprenne à utiliser les macros un jour...
Répondre
Test- 26 janv. 2005 à 20:56
Je fais un test
Répondre
Talha- 3 mai 2013 à 18:27
Julien c'est même pas sorcier en plus. Va pas croire qu'il faut apprendre toutes les formules. Il suffit de générer le code automatiquement grâce à l'enregistreur de macros, et de potasser un peu sur le code généré = ) Bon courage.
Répondre
Ajouter un commentaire
Réponse
+2
moins plus
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 ?
bremic83 34Messages postés vendredi 8 mai 2009Date d'inscription 29 mars 2010 Dernière intervention - 10 mai 2009 à 09:16
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
Ajouter un commentaire
Réponse
+1
moins plus
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.zip

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é.
bremic83 34Messages postés vendredi 8 mai 2009Date d'inscription 29 mars 2010 Dernière intervention - 10 mai 2009 à 19:40
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
axelanie- 12 août 2009 à 17:40
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
gbinforme 11094Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 15 juin 2015 Dernière intervention - 13 août 2009 à 09:30
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
Ajouter un commentaire
Réponse
+1
moins plus
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.
bremic83 34Messages postés vendredi 8 mai 2009Date d'inscription 29 mars 2010 Dernière intervention - 11 mai 2009 à 21:58
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
Ajouter un commentaire
Réponse
+1
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
bremic83 34Messages postés vendredi 8 mai 2009Date d'inscription 29 mars 2010 Dernière intervention - 9 mai 2009 à 09:14
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 34Messages postés vendredi 8 mai 2009Date d'inscription 29 mars 2010 Dernière intervention - 9 mai 2009 à 16:14
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
Ajouter un commentaire
Réponse
+0
moins plus
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
bremic83 34Messages postés vendredi 8 mai 2009Date d'inscription 29 mars 2010 Dernière intervention - 12 mai 2009 à 09:19
Bonjour,
Je suis sous Vista

Bremic83
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
bonjour

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

mais je n'ai pas vista.
Bremic83- 13 mai 2009 à 11:19
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
bonjour

As-tu regardé ceci :
http://www.commentcamarche.net/faq/sujet 6604 vista s approprier un fichier dont l acces est refuse
Bremic83- 14 mai 2009 à 09:06
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
Ajouter un commentaire
Réponse
+0
moins plus
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"
Bremic83- 17 mai 2009 à 17:15
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Bremic83- 17 mai 2009 à 19:15
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- 17 mai 2009 à 19:28
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
Ajouter un commentaire
Réponse
+0
moins plus
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".
Bremic83- 17 mai 2009 à 23:15
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Bremic83- 18 mai 2009 à 12:21
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- 18 mai 2009 à 20:54
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
Ajouter un commentaire
Réponse
+0
moins plus
OK tu es mon sauveur,MERCI

A plus.

Bremic83
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
bonjour

Tu ne peux pas trier des cellules qui font références à une autre plage mais tu peux effectivement faire une copie puis ensuite tu peux trier sans souci et tu fait la copie très simplement avec ce code :
    Range("A1:A30").Copy Range("G1")
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup, toutefois si je peux profiter de tes compétences, quel serait le code à mettre dans ma feuille VBA pour que la copie ne se fasse qu'au changement d'onglet car je l'ai mis dans la macro qui retrie ma liste à chaque modification de cellule, mais du coup le programme tourne en rond ?
Ajouter un commentaire
Réponse
+0
moins plus
bonjour

Il faut le mettre dans worksheet_activate la macro événementielle.
Ajouter un commentaire
Ce document intitulé «  Tri automatique sur Excel  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.