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 24581 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 :)

13 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. oz@work Messages postés 129 Statut Membre 3
     
    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
  4. Mélodiese Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mélodiese Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  7. oz@work Messages postés 129 Statut Membre 3
     
    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
  8. oz@work Messages postés 129 Statut Membre 3
     
    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
  9. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    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
  10. oz@work Messages postés 129 Statut Membre 3
     
    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
  11. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    Re le Forum

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

    Mytå
    0
  12. Mélodiese Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  13. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Mélodiese, regarde plus bas.
    eric
    0
  14. Mélodiese Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Re le Forum

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

      Mytå
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    3. Mélodiese Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    5. Mélodiese Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
       
      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