Excel 2003. Affichez les résultats d'un tri dans un autre onglet
Mélodiese
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je cherche à présenter, dans un onglet autre que celui où se trouve les données, les résultats d'un tri selon 3 conditions et de manière automatique. J'aimerais éviter que les utilisateurs aient à faire le tri de leurs données, car ils ne sont pas familiers avec Excel.
Par exemple, chaque item du tableau de données possède ses caractérisques propres : numéro, catégorie, sous-catégorie, type, date, etc, et parfois une lettre correspondante (P,O,D ou C).
Au fur et à mesure que les items sont saisies, avec leurs caractéristiques propres, et non triés au préalable, j'aimerais, entre autres, que les items classés dans la même catégorie, sous-catégorie et type soient présentés ensemble et affiche le numéro des items qui répondent à ses conditions.
Exemple
Numéros d'items classés dans la même catégorie - même sous-catégorie - même type
Si cela est possible de programmer l'affichage des données pour que cela se fasse automatiquement, j'en serais extrêmement ravie, ainsi que mon équipe :)
Par exemple, chaque item du tableau de données possède ses caractérisques propres : numéro, catégorie, sous-catégorie, type, date, etc, et parfois une lettre correspondante (P,O,D ou C).
Au fur et à mesure que les items sont saisies, avec leurs caractéristiques propres, et non triés au préalable, j'aimerais, entre autres, que les items classés dans la même catégorie, sous-catégorie et type soient présentés ensemble et affiche le numéro des items qui répondent à ses conditions.
Exemple
Numéros d'items classés dans la même catégorie - même sous-catégorie - même type
Si cela est possible de programmer l'affichage des données pour que cela se fasse automatiquement, j'en serais extrêmement ravie, ainsi que mon équipe :)
A voir également:
- Excel 2003. Affichez les résultats d'un tri dans un autre onglet
- Comment faire un tri personnalisé sur excel - Guide
- Liste déroulante excel - Guide
- Resultats foot - Télécharger - Vie quotidienne
- Rouvrir un onglet fermé - Guide
- Word et excel gratuit - Guide
13 réponses
Bonjour,
Une proposition avec tri par liste personnelle, compatible 2003.
Je n'ai pas bien compris l'intérêt d'une feuille qui doublonne toutes les données.
Donc sur la même feuille un bouton bascule pour afficher trié, ou dans l'ordre des saisies.
A1:A5 sont sensées être vides (sinon adapter la macro)
I peut être masquée
https://www.cjoint.com/?DKpn6SCC9SR
eric
Une proposition avec tri par liste personnelle, compatible 2003.
Je n'ai pas bien compris l'intérêt d'une feuille qui doublonne toutes les données.
Donc sur la même feuille un bouton bascule pour afficher trié, ou dans l'ordre des saisies.
A1:A5 sont sensées être vides (sinon adapter la macro)
I peut être masquée
https://www.cjoint.com/?DKpn6SCC9SR
eric
Bon, j'ai fait avec les 3 premières catégories, à compléter dans le code à 2 endroits :
Array("Première", "Deuxième", "Troisième")
Clic-droit sur le nom d'onglet et choisir 'visualiser le code'
J'ai aussi ajouté : la cellule active suit le tri pour rester sur la ligne en cours.
Rappel : A1:A5 doivent être vides sinon adapter le code
https://www.cjoint.com/c/DKss6QmI6S0
eric
Array("Première", "Deuxième", "Troisième")
Clic-droit sur le nom d'onglet et choisir 'visualiser le code'
J'ai aussi ajouté : la cellule active suit le tri pour rester sur la ligne en cours.
Rappel : A1:A5 doivent être vides sinon adapter le code
https://www.cjoint.com/c/DKss6QmI6S0
Option Explicit Sub tri1() Dim numListe As Long, savIndex As Long, savCell As Range, c As Range savIndex = Cells(ActiveCell.Row, "I") Set savCell = ActiveCell ' tri PODC On Error Resume Next ' récup n° de liste personnelle numListe = Application.GetCustomListNum(Array("P", "O", "D", "C")) On Error GoTo 0 If numListe = 0 Then ' liste personnelle n'existe pas, on l'ajoute Application.AddCustomList ListArray:=Array("P", "O", "D", "C") ' récup n° de liste numListe = Application.CustomListCount End If Range("A6:I" & Cells(Rows.Count, "A").End(xlUp).Row).Sort Key1:=Range("F7"), Header:=xlYes, OrderCustom:=numListe + 1 'tri ss-cat, type Range("A6:I" & Cells(Rows.Count, "A").End(xlUp).Row).Sort Key1:=Range("D7"), Key2:=Range("H7"), _ Header:=xlGuess, DataOption2:=xlSortTextAsNumbers ' tri Catégorie On Error Resume Next ' récup n° de liste personnelle numListe = Application.GetCustomListNum(Array("Première", "Deuxième", "Troisième")) On Error GoTo 0 If numListe = 0 Then ' liste personnelle n'existe pas, on l'ajoute Application.AddCustomList ListArray:=Array("Première", "Deuxième", "Troisième") ' récup n° de liste numListe = Application.CustomListCount End If Range("A6:I" & Cells(Rows.Count, "A").End(xlUp).Row).Sort Key1:=Range("C7"), Header:=xlYes, OrderCustom:=numListe + 1 ' select ancienne cellule active If savCell.Row > 6 Then Set c = [I:I].Find(savIndex, LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then savCell.Select Else Cells(c.Row, savCell.Column).Select End If Else savCell.Select End If End Sub Sub tri0() Dim savIndex As Long, savCell As Range, c As Range savIndex = Cells(ActiveCell.Row, "I") Set savCell = ActiveCell Range("A6:I" & Cells(Rows.Count, "A").End(xlUp).Row).Sort Key1:=Range("I7"), Header:=xlGuess ' select ancienne cellule active If savCell.Row > 6 Then Set c = [I:I].Find(savIndex, LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then savCell.Select Else Cells(c.Row, savCell.Column).Select End If Else savCell.Select End If End Sub Private Sub ToggleButton1_Click() With ToggleButton1 If ToggleButton1 Then .Caption = "Trié" Else .Caption = "Saisie" If ToggleButton1 Then tri1 Else tri0 End If End With End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row > 6 And Target.Column = 1 And Cells(Target.Row, "I") = "" Then Cells(Target.Row, "I") = Application.CountA([A:A]) - 1 End If End Sub
eric
Bonsoir Melodiese,
Pourrais-tu nous envoyer ton classeur avec un exemple de réponse souhaitée via cjoint.com?
Merci.
Pour répondre brièvement à ta question, un tri ne se fait pas automatiquement sur Excel (à mon avis).Il doit se faire soit via la commande de tri, soit via une macro.J'ai dû justement programmer un tri pour des utilisateurs "novices" sur Excel et tout se fait uniquement avec un bouton associé à une macro.Ils en sont ravis!
On attend donc ton exemple pour commencer à t'aider.
Bonne soirée.
Pourrais-tu nous envoyer ton classeur avec un exemple de réponse souhaitée via cjoint.com?
Merci.
Pour répondre brièvement à ta question, un tri ne se fait pas automatiquement sur Excel (à mon avis).Il doit se faire soit via la commande de tri, soit via une macro.J'ai dû justement programmer un tri pour des utilisateurs "novices" sur Excel et tout se fait uniquement avec un bouton associé à une macro.Ils en sont ravis!
On attend donc ton exemple pour commencer à t'aider.
Bonne soirée.
Bon, Monsieur Oz, j'espère que vous avez un peu de patience :) Je viens de joindre mon fichier via le site cjoint.com, mais ne sais où il séjourne en ce moment. Il n'est pas revenu sur terre, car je ne le vois pas sur le site. "Il ne faut jamais demandé son chemin à qui ne sait pas s'égarer" Rolland Giguère.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oups, je viens de recevoir un courriel m'indiquant l'adresse du fichier : https://www.cjoint.com/?3KmbVclLWtx
Y avez-vous accès avec cette adresse?
Y avez-vous accès avec cette adresse?
Bonsoir Melodiese,
Nous avons bien accès à ton fichier.
Effectivement, il va falloir créer une macro pour éviter que tes utilisateurs ne fassent le tri eux-mêmes.
Je regarde si je peux t'aider ;)
Au final, est-ce que ça doit te rendre ça >> http://imagik.fr/view-rl/133713 ?
Nous avons bien accès à ton fichier.
Effectivement, il va falloir créer une macro pour éviter que tes utilisateurs ne fassent le tri eux-mêmes.
Je regarde si je peux t'aider ;)
Au final, est-ce que ça doit te rendre ça >> http://imagik.fr/view-rl/133713 ?
Si oui,
Comme j'utilise Excel 2010, je ne sais pas si mon fichier sera compatible.
Ce qu'il faut faire, c'est recopier le "tableau de compilation" dans la feuille "classement d'items équivalents" selon les données souhaitées.
J'avoue ne pas être totalement au point niveau programmation de macro donc je "triche" un peu :D
> Feuille 'Classement d'items équivalents'
En A2 : =SI('Tableau de compilation '!$A8=0;"";'Tableau de compilation '!$A8)
En B2: =SI('Tableau de compilation '!$B8=0;"";'Tableau de compilation '!$B8)
En C2: =SI('Tableau de compilation '!$C8=0;"";'Tableau de compilation '!$C8)
En D2: =SI('Tableau de compilation '!$D8=0;"";'Tableau de compilation '!$D8)
En E2: =SI('Tableau de compilation '!$F8=0;"";'Tableau de compilation '!$F8)
Puis copier-coller la portion [A2:E2] dans le reste des colonnes (jusqu'à la ligne que tu souhaites).
Ensuite, il faut créer la fameuse macro de tri, que j'appelle TRI (pourquoi faire compliqué!)
Dans cette macro, on va sélectionner les colonnes A,B,C,D,et E puis les trier selon 3 critères dans l'ordre:
1- selon la catégorie
2- selon la sous-catégorie
3- selon le PODC
Ce qui nous donne:
Sub TRI()
'
' TRI Macro
'
'
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Clear
Columns("A:E").Select
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Add Key:=Range("C:C"), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="Première,Deuxième,Troisième", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Add Key:=Range("D:D"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Add Key:=Range("E:E"), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="P,O,D,C", DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort
.SetRange Columns("A:E")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Pour finir, il suffit d'associer cette macro à un bouton situé sur le coté du tableau et le tour est joué ;)
Comme j'utilise Excel 2010, je ne sais pas si mon fichier sera compatible.
Ce qu'il faut faire, c'est recopier le "tableau de compilation" dans la feuille "classement d'items équivalents" selon les données souhaitées.
J'avoue ne pas être totalement au point niveau programmation de macro donc je "triche" un peu :D
> Feuille 'Classement d'items équivalents'
En A2 : =SI('Tableau de compilation '!$A8=0;"";'Tableau de compilation '!$A8)
En B2: =SI('Tableau de compilation '!$B8=0;"";'Tableau de compilation '!$B8)
En C2: =SI('Tableau de compilation '!$C8=0;"";'Tableau de compilation '!$C8)
En D2: =SI('Tableau de compilation '!$D8=0;"";'Tableau de compilation '!$D8)
En E2: =SI('Tableau de compilation '!$F8=0;"";'Tableau de compilation '!$F8)
Puis copier-coller la portion [A2:E2] dans le reste des colonnes (jusqu'à la ligne que tu souhaites).
Ensuite, il faut créer la fameuse macro de tri, que j'appelle TRI (pourquoi faire compliqué!)
Dans cette macro, on va sélectionner les colonnes A,B,C,D,et E puis les trier selon 3 critères dans l'ordre:
1- selon la catégorie
2- selon la sous-catégorie
3- selon le PODC
Ce qui nous donne:
Sub TRI()
'
' TRI Macro
'
'
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Clear
Columns("A:E").Select
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Add Key:=Range("C:C"), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="Première,Deuxième,Troisième", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Add Key:=Range("D:D"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort.SortFields. _
Add Key:=Range("E:E"), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="P,O,D,C", DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Classement d'items équivalents").Sort
.SetRange Columns("A:E")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Pour finir, il suffit d'associer cette macro à un bouton situé sur le coté du tableau et le tour est joué ;)
salut le Forum
Déjà à première vue
SortOn:=xlSortOnValues
CustomOrder:="Première,Deuxième,Troisième" et CustomOrder:="P,O,D,C"
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
Instructions non reconnu par Excel 2003.
Mytå
Déjà à première vue
SortOn:=xlSortOnValues
CustomOrder:="Première,Deuxième,Troisième" et CustomOrder:="P,O,D,C"
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
Instructions non reconnu par Excel 2003.
Mytå
arf!C'est la partie qui trie en fonction de la catégorie.
Je me doutais bien que ça ne fonctionnerait pas.
Y-a-t-il un traducteur Excel 2010>2003 parmi nous?
Je me doutais bien que ça ne fonctionnerait pas.
Y-a-t-il un traducteur Excel 2010>2003 parmi nous?
Bonjour, je suis impressionnée par votre travail et votre dévouement. Je m'y perds toutefois complètement avec les macros. Oz, c'est bien le résultat que j'attends, comme tu me le demandais dans le premier message, mais je vois que ma version cause des difficultés supplémentaires. Cela semble être tout un défi, et je commence à me sentir gênée par ma demande. Je ne peux même pas vous aider, sauf pour répondre à vos questions :)
Merci Éric pour ton précieux travail. J'ai manipulé le ficher avec les options de tri qu'il offre, mais je ne parviens malheureusement pas à afficher, par exemple, les catégories d'items par ordre logique plutôt qu'alphabétique. Aussi, il semble que cette option ne me permette pas d'avoir une vue d'ensemble de tous les items classés dans un ordre défini, mais préalablement saisis de manière aléatoire. Les utilisateurs de ce fichiers ne connaissent pas beaucoup Excel et comme nous n'avons aucun soutien informatique en cette matière, je désire leur permettre d'avoir une vision de tous les items, qui correspondent aux critères définis : les mêmes catégories, et parmi celles-ci les mêmes sous-catégories. Pour les items qui possèdent un S-F correspondant, soit un P, un O, un D, ou un C, j'aimerais qu'ils soient classés selon cet ordre. Il se peut que ce que je demande ne soit pas possible, mais j'ose encore solliciter votre précieuse aide, étant novice dans le domaine. Mais sachez, qu'à l'impossible, nul n'est tenu :)
Je suis désolée si mon message n'était pas assez clair. J'avais écrit ceci au départ :
Au fur et à mesure que les items sont saisies, avec leurs caractéristiques propres, et non triés au préalable, j'aimerais, entre autres, que les items classés dans la même catégorie, sous-catégorie et type soient présentés ensemble et affiche le numéro des items qui répondent à ses conditions.
Donc, affichage des mêmes catégories, puis des mêmes sous-catégories dans ces catégories, puis, leur type PODC correspondant et trié aussi, si cela est possible. Sinon, ce sera déjà beaucoup.
Je n'ai pas encore utilisé de filtres, et je ne sais pas si c'est la façon de faire pour programmer cet affichage. L'idée de départ est de présenter cet affichage sans que les utilisateurs aient à manipuler l'information.
Merci Éric.
Au fur et à mesure que les items sont saisies, avec leurs caractéristiques propres, et non triés au préalable, j'aimerais, entre autres, que les items classés dans la même catégorie, sous-catégorie et type soient présentés ensemble et affiche le numéro des items qui répondent à ses conditions.
Donc, affichage des mêmes catégories, puis des mêmes sous-catégories dans ces catégories, puis, leur type PODC correspondant et trié aussi, si cela est possible. Sinon, ce sera déjà beaucoup.
Je n'ai pas encore utilisé de filtres, et je ne sais pas si c'est la façon de faire pour programmer cet affichage. L'idée de départ est de présenter cet affichage sans que les utilisateurs aient à manipuler l'information.
Merci Éric.
Bonjour,
Je viens de constater que la configuration de mon système m'empêchait de faire fonctionner ton bouton. Maintenant que cela est réglé, j'ai pu apprécier ton travail. Cela rend les choses vraiment plus faciles. Le dernier rêve que j'aimerais voir réalisé est que les catégories (il y en a environ 10 dans mon fichier original) soient classées selon l'ordre numérique (1, 2, 3... 10.). Est-ce que tu fais tout cela avec une macro? Je n'arrive pas à voir tes commandes. Tu pourrais m'indiquer où elles se trouvent pour que je tente de comprendre ta magie?
Je viens de constater que la configuration de mon système m'empêchait de faire fonctionner ton bouton. Maintenant que cela est réglé, j'ai pu apprécier ton travail. Cela rend les choses vraiment plus faciles. Le dernier rêve que j'aimerais voir réalisé est que les catégories (il y en a environ 10 dans mon fichier original) soient classées selon l'ordre numérique (1, 2, 3... 10.). Est-ce que tu fais tout cela avec une macro? Je n'arrive pas à voir tes commandes. Tu pourrais m'indiquer où elles se trouvent pour que je tente de comprendre ta magie?