Excel 2003. Affichez les résultats d'un tri dans un autre onglet

Fermé
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020 - 11 nov. 2014 à 01:43
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 18 nov. 2014 à 18:53
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 :)



A voir également:

13 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
15 nov. 2014 à 13:58
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
2
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
18 nov. 2014 à 18:53
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

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
1
oz@work Messages postés 127 Date d'inscription dimanche 2 novembre 2014 Statut Membre Dernière intervention 20 janvier 2015 3
11 nov. 2014 à 02:01
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.
0
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020
12 nov. 2014 à 01:54
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020
12 nov. 2014 à 01:57
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?
0
oz@work Messages postés 127 Date d'inscription dimanche 2 novembre 2014 Statut Membre Dernière intervention 20 janvier 2015 3
15 nov. 2014 à 01:19
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 ?
0
oz@work Messages postés 127 Date d'inscription dimanche 2 novembre 2014 Statut Membre Dernière intervention 20 janvier 2015 3
15 nov. 2014 à 02:05
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é ;)
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 949
Modifié par Mytå le 15/11/2014 à 03:02
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å
0
oz@work Messages postés 127 Date d'inscription dimanche 2 novembre 2014 Statut Membre Dernière intervention 20 janvier 2015 3
15 nov. 2014 à 23:20
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?
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 949
15 nov. 2014 à 23:31
Re le Forum

Eric à déjà fourni une version: Voir Lien#7

Mytå
0
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020
15 nov. 2014 à 23:37
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 :)
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
16 nov. 2014 à 01:25
Mélodiese, regarde plus bas.
eric
0
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020
16 nov. 2014 à 23:55
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 :)
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 949
17 nov. 2014 à 00:00
Re le Forum

Tu veux ceci comme classement : http://imagik.fr/view-rl/133713

Mytå
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
17 nov. 2014 à 00:28
Re,

tu n'as demandé un tri spécial que pour PODC, les autres ont un tri alpha.
Si d'autres champs ont une particularité le préciser en détail, champ par champ. On ne peut pas deviner.
Tu parles de tris, pas de filtres, on est bien d'accord ?

eric
0
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020
17 nov. 2014 à 14:02
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.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
17 nov. 2014 à 15:38
Bonjour,

Et que manque-t-il au fichier que je t'ai fourni ?
Tu appuies sur le bouton, c'est trié. Tu ré-appuis dessus c'est dans l'ordre des saisies.
Tu redis la même chose mais tu n'expliques pas plus ce qui ne va pas.
eric
0
Mélodiese Messages postés 17 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 15 février 2020
18 nov. 2014 à 00:54
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?
0