Classement automatique liste avec ajout

Résolu

Bonjour,

Je continue dans ma création, je voudrais que ma liste de modèles et immatriculations se classe automatiquement lorsque je rajoute un modèle et immat dans ma liste.

J'ai essayé avec la fonction "RANG" avec ajout de colonnes supplémentaires , mais cela ne fonctionne pas.

La fonction de tri non plus. J'ai cherché, mais les résultats ne me conviennent pas.

La "MACRO" je ne connais pas et je voudrais l'éviter.

J'ai encore besoin d'aide, et je vous en remercie d'avance.

kylejake


 


Windows 10 - OOA 4.1.13 Libo 7.4

14 réponses

Résumé de la discussion

Le demandeur souhaite que la liste des modèles et des immatriculations se trie automatiquement dès l’ajout d’une entrée, sans recourir à une macro, après avoir essayé RANG et des tris manuels sans résultat satisfaisant. Les réponses proposent plusieurs axes, allant d’un exemple Excel comme référence et de l’utilisation du tri intégré, à une approche Calc basée sur une macro UNO (avec des sous-programmes tels que CopierTableau et TriTableau). Certaines interventions soulignent des ambiguïtés sur le contexte et les différences entre Excel et Calc, ce qui peut influencer l’approche à adopter. Enfin, les échanges évoquent aussi l’option d’automatiser via une macro (VBA ou UNO) ou de rester sur un tri manuel avec les outils disponibles, avec des indications techniques concrètes pour la mise en œuvre.

Bobot (l’IA à votre service)
  1. Contributeur

    Bonjour.

    De quoi tu parles ? Et à quoi fais-tu allusion ?


    0
    1. Bonsoir Raymond

      Je souhaite que ma liste se classe alphabétiquement et automatiquement lorsque je rajoute à la suite un nouveau modèle.

      Que ce dernier prenne automatique sa place dans la liste sans avoir à faire des manipulations.

      Merci

      0
      1. Contributeur

        Tu n'as pas compris !

        • On ne sait pas de quelle liste tu parles ...
        • On ignore ce que tu appelles un modèle ...
        • Tu n'as pas précisé ce qu'est ta création, ni quelle est cette MACRO !

        0
        1. Bonjour,

          Vous pourriez essayer cet exemple avec une petite macro très simple, je ne vois pas trop comment faire autrement :

          https://www.cjoint.com/c/MIzkoYkWI4s

          Cordialement,

          0
          1. Suite :

            Vous ajoutez de nouveaux modèles et numéros d’immatriculation et vous appuyez sur le bouton de "tri par modèle".

            0
        2. Bonjour,

          Désolé pour cette réponse très tardive, je m'en excuse.

          Des difficultés m'ont mis loin d'un PC.

          Je joins un document pour expliquer tout cela.

          Merci de votre patience et de votre aide

          https://www.cjoint.com/c/MJkjCSbh3qw


          0
          1. Bonjour,

            Un exemple pour Excel, mais je suppose que cela  doit être à peu près pareil sur Libre/Open Office.

            Cordialement,

            https://www.cjoint.com/c/MJkjWaJsJms

            +++

            0
            1. Bonjour,

              Merci de la réponse.

              J'ai ouvert le document, mais je n'ai pas plus d'infos sur la ou les formules.

              Je ne peux pas ouvrir davantage le document.

              Parfois il y a quelques petites manips différentes entre Excel et Calc.

              Cdt


              0
              1. Je n'utilise pas Libre/Open Office. Attendons qu'un intervenant pratiquant MS et Libre/Open vous propose une transcription de ce tableau.

                ....

                0
                1. Contributeur

                  Bonjour.

                  Pourquoi nous imposer toute cette discussion stérile ?
                  "La fonction de tri non plus"
                  L'outil Tri fonctionne parfaitement, comme je viens de le vérifier ...


                  0
                  1. Bonjour,

                    Stérile je ne pense pas !

                    Juste un besoin d'aide, alors désolé si j'ai créé une gène.

                    Je me suis fait mal comprendre, cela viens surement de la présentation de la demande.

                    Je ne souhaites pas passer d'une liste à une autre.

                    Je souhaites une seule liste qui s'actualise toute seule.

                    Lorsque j'inscris un nouveau modèle dans la liste, il se classe directement à sa place dès que son immat apparait.

                    Cela n'est peut être pas possible, je ne le sais pas.

                    Merci pour votre indulgence.

                    Cdt


                    0
                    1. Contributeur

                      Oh, là, là !

                      Je n'ai pas créé une deuxième liste : C'est ton propre fichier que j'ai utilisé ; et tu peux vérifier que les 2 listes sont identiques ...

                      Pourquoi exiger un automatisme quelconque ? Il faudrait écrire une macro en VBA !

                      Or il te suffit de faire un TRI. Il fonctionnera par un simple clic, quand tu auras saisi un nouveau modèle ...

                      Je ne suis pas gêné, mais je persiste à dire que c'est une discussion stérile, car inutile.


                      0
                      1. Bonsoir

                        les macros à utilisées réalisées avec enregistreur de macro

                        Cjoint hs donc pour l'instant impossible de mettre un lien pour le classeur

                        sub CopierTrier
                        dim document   as object
                        Call CopierTableau
                        call TriTableau
                        End sub
                        
                        sub CopierTableau
                        dim document   as object
                        dim dispatcher as object
                        document   = ThisComponent.CurrentController.Frame
                        dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
                        
                        dim args1(0) as new com.sun.star.beans.PropertyValue
                        args1(0).Name = "ToPoint"
                        args1(0).Value = "$B$3:$C$1000"
                        
                        dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
                        dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
                        dim args3(0) as new com.sun.star.beans.PropertyValue
                        args3(0).Name = "ToPoint"
                        args3(0).Value = "$E$3"
                        
                        dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
                        
                        dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
                        
                        dim args5(0) as new com.sun.star.beans.PropertyValue
                        args5(0).Name = "ToPoint"
                        args5(0).Value = "$E$3"
                        
                        dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
                        
                        end sub
                        
                        
                        sub TriTableau
                        dim document   as object
                        dim dispatcher as object
                        
                        document   = ThisComponent.CurrentController.Frame
                        dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
                        
                        dim args1(0) as new com.sun.star.beans.PropertyValue
                        args1(0).Name = "ToPoint"
                        args1(0).Value = "$E$3:$F$1000"
                        
                        dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
                        
                        dim args2(6) as new com.sun.star.beans.PropertyValue
                        args2(0).Name = "ByRows"
                        args2(0).Value = true
                        args2(1).Name = "HasHeader"
                        args2(1).Value = true
                        args2(2).Name = "CaseSensitive"
                        args2(2).Value = false
                        args2(3).Name = "IncludeAttribs"
                        args2(3).Value = true
                        args2(4).Name = "UserDefIndex"
                        args2(4).Value = 0
                        args2(5).Name = "Col1"
                        args2(5).Value = 5
                        args2(6).Name = "Ascending1"
                        args2(6).Value = true
                        
                        dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
                        
                        end sub
                        0
                        1. Bonjour Yclik

                          Désolé pour ce retard du à mon boulot loin de mon PC

                          Merci, je vais suivre tes conseils et les appliqués.

                          Cdt


                          0