Vba - Tri sur feuille protégée

Bonjour,

Voilà mon code pour trier par ordre Alpha ma feuille de calcul quand je rajoute une donnée en fin de plage. Apparemment le résultat et bon.

Toutefois, comment est-il possible que je puisse arriver à supprimer l'enregistrement que je viens d'ajouter.

Est-il possible d'améliorer ce petit problème.

Lien de téléchargement : https://mon-partage.fr/f/s9XghS1r/

Merci à Tous

Sub tri_listing()
'
' tri Macro
'
ActiveSheet.Unprotect ("xavier")

Range("A2:H10000").Select
ActiveWorkbook.Worksheets("listing").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("listing").Sort.SortFields.Add Key:=Range("A2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

ActiveWorkbook.Worksheets("listing").Sort.SortFields.Add Key:=Range("D2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

ActiveWorkbook.Worksheets("listing").Sort.SortFields.Add Key:=Range("E2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("listing").Sort
.SetRange Range("A2:H10000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

ActiveSheet.Protect ("xavier")

End Sub

28 réponses

Résumé de la discussion

Le fil porte sur un code VBA qui trie une feuille listing par ordre alphabétique et soulève le problème de suppression de l'enregistrement ajouté en fin de plage. Plusieurs réponses envisagent d'élargir la plage A2:H10000, d'ajouter une protection par mot de passe et d'utiliser des déclencheurs comme le double clic sur le titre. D'autres échanges évoquent des ajustements du tri sur plusieurs colonnes (A, D et E) et des variantes de code visant à faciliter la suppression ou l'identification de la ligne nouvellement insérée. Enfin, des ressources partagées proposent des astuces pour améliorer l'affichage après classement et assurer la cohérence des résultats, tout en évoquant limites et bonnes pratiques de protection.

Bobot (l’IA à votre service)
  1. Contributeur
    Bonjour
    pour info:petite enveloppe rouge en tout en haut de la page à droite de ton pseudo
    à+
    0
    1. Contributeur
      Ok je vais voir ce que peux en tirer
      pour l'inscription, doit y avoir un problème car il n'est pas possible d’accéder à ton profil via ton pseudo.
      Je regarde tout ça et je te dis si je peux faire quelque chose
      A+

      1
      1. Re,
        J’avais l’intention initialement de faire un fichier unique, mais celui-ci serait trop volumineux avec une multitude d’onglets, gérer les droits des différents utilisateurs, bref un grand bazar ingérable. Donc, j’ai opté pour un fichier de ce type par division (car toutes les divisions sont différentes et gérées par des responsables différents).

        Le fichier sur lequel que tu planches ne correspond qu'à une seule division (soit 8 équipes). Que je vais répliquer une fois ficelé et tester avec des utilisateurs de mon secteur.

        Normalement je devrais tourner vers 45 fichiers minimum soit minimum 360 équipes réparties en 45 divisions différentes). Pour un total de 5000 matchs minimum

        La liste des joueurs est incomplète, car il y a toujours des nouveaux joueurs qui prennent des licences ou des joueurs qui changent de divisions en cours de saison « les brûlages c’est cela + de la réglementation » .

        Concernant le doublon c'est une erreur de ma part (j'ai modifié).

        Concernant le numéro de licence, j'ai rajouté le N° de licence dans l'onglet "résultats match" en colonne O et P.

        Pour le fichier de brûlage, mon idée est celle-ci :

        Quand je sélectionne un joueur (Lettre A) dans l'onglet "Résultat Match" cellule "H5" alors je mets dans "l'onglet brulages" dans la colonne de référence "Date" pour le numéro de licence correspondant le dernier caractère de la cellule "H4" de l'onglet "résultat Match".

        Puis Idem Lettre B, C, X, Y et Z

        Maintenant l'écrire avec Excel, c'est pas pour moi.

        Je suis inscrit sur CCM, mais pour les messages MP je ne sais pas faire, plutôt jamais essayé. Je vais regarder après et éventuellement faire un test

        Lien de téléchargement du fichier modifier : https://mon-partage.fr/f/GiUdyubW/

        Si tu peux me faire cela pour les 3 premiers de chaque colonne, du 1er match, je devrais pouvoir m'en sortir pour le reste.

        PS, concernant le fichier brûlage tu peux adapter les colonnes à tes souhaits

        Pour la consolidation, j'ai déjà arrivé à importer toutes les feuilles de calcul "Joueurs" des différents fichiers et supprimer les lignes qui ne servent à rien. Reste à consolider les informations pour un N° de licence sur une seule ligne.

        Un grand merci
        0
        1. Contributeur
          re

          je vais regarder ce que je peux faire, mais je ne promet rien car ça semble un peu lourd

          mais on va essayer quand même
          deux questions:
          • combien pense tu avoir de tableau de match dans l'année ou autrement dit, la feuille "Résultat match" est elle complète?

          la liste des joueurs est supposée complète, mais il y a un doublon en ligne 132 133 de la feuille JOUEURS alors que le N° de joueur n'est pas le même, peut on savoir pourquoi?
          et une remarque:
          • en cas d'identité de noms et prénoms entre deux équipes (ça parait peu probable comme tu dis) je ne pourrais pas utiliser le N° de licence car il n'est pas spécifié dans la feuille résultat match, et si je vais le chercher dans la feuille JOUEUR avec une formule, le problème restera le même. Si ce cas se présente, restent donc seulement deux options:soit entrer le N° de licence dans une colonne de Résultat pour aller chercher le nom de joueur

          soit identifier le second avec un indice quelconque en complément de son nom, par exemple un identifiant rapporté à son club

          en attendant tes réponses, je signale que je suis un peu à la bourre ces quelques jours, je pars samedi pour 4 semaines _ probablement pas très loin de chez toi, sauf erreur_ mais on devrait pouvoir rester de temps en temps en liaison.

          pour simplifier la communication, voit si tu peux t'inscrire sur CCM et me prévenir en passant un message privé en cliquant sur mon pseudo dans un de mes messages

          crdlmnt

          1
          1. Bonjour Vaucluse,

            Oui, cela me convient parfaitement. Je vais obliger les utilisateurs à indiquer un 0-0 par défaut si c'est nécessaire.

            Sinon,

            Trouve en téléchargement 2 liens

            un lien de téléchargement pour répondre à tes attentes, j'ai apporté des commentaires en essayant d'etre plus clair : https://mon-partage.fr/f/h0ppAwo6/

            un lien de téléchargement relatif au fichier que j'ai mis à jour et apporter qq modifs : https://mon-partage.fr/f/pa38z8KN/

            Un grand merci, cordialement
            0
            1. Slt,

              Oui c'est compliqué. Je vais revoir la chose.

              Mais tout d'abord, concernant les onglets "MATCH 8eq" comment cela se fait qu'il n-y ait pas de 7eme et 8 éme, pourtant les formules y sont bien présentent.
              0
              1. Contributeur
                Parce que je n'y connais rien, et donc je n'ai pas fait le nécessaire pour prendre en compte les lignes qui n'ont pas de départage, le code d'erreur les élimine automatiquement.
                Si besoin, je te règle ça, mais en attendant tu peux compléter le tableau en ajoutant un 0_0 dans les cellules K12 à K15.
                Par ailleurs si le résultat te convient tel qu'il est tu peux effacer la colonne N (en bleu), elle n'est pas utilisée.
                à + donc
                0
            2. Contributeur
              Bon
              je viens de retourner ça dans tous les sens, mais il va falloir compléter les info, parce que tu as du sauter pas mal de ligne pour écrire ton Word :-))... enfin, pour toi, non, mais pour le néophyte que je suis, c'est bien le cas.
              • Tu me parles de la feuille Résultats match

              pour celle ci faudrait déjà comprendre ce que tu entends pas ABC et XYZ et aussi pourquoi la formule en G et K renvoie successivement par exemple A,B,C et recommence à B en G8... ceci un peu partout dans les tableaux
              Si c'est pour dire qu'il faut identifier les lignes qui commencent soit par ABC en G ou XYZ en K , je note, mais confirmer.
              • et pourquoi 3 lettres plutôt que une seule, ou une différente pas ligne?

              ça voudrait donc dire plus simplement que si, un joueur est identifié, par A,B,C ou X,Y,Z, il faut renvoyer 1 dans la colonne de référence de la feuille brûlage
              • On en vient donc à cette fameuse feuille et référence. C'est quoi la ,colonne de référence, c'est celle dont le titre est la date en ligne 2?
              • IMPORTANT:et comment se remplit cette feuille? car si tu y places des infos au clavier, pas question d'y admettre une formule.

              si jamais on s'y retrouve pour avancer, deux questions:
              peux tu admettre qu'en colonne B de résultats match la date soit placée en B sur la <1° cellule de chaque tableau est répétée par égalité sur les suivantes
              y a t il dans des équipes différentes des joueurs avec même nom et prénom (si oui, il faudra compléter l'identification par un code)
              • Quant au tableau sur ta feuille, tu me parles de la non concordance des journées avec les tours.. mais je ne sais pas ce que c'est, les tours! Et le fait que certaines cellules soient en jaune ne me dit absolument rien

              Donc il y a encore du boulot
              !
              à te lire sur le sujet, la 1° chose à faire étant de prendre en compte la remarque en gras ci dessus. Si on ne peut pas placer de formule, on essaiera de trouver autre chose...quand j'aurais vraiment compris ce que tu veux.. mais c'est pas tout de suite...!

              cordialement

              0
              1. Contributeur
                Salut Xavier
                j'ai bien tenté de regarder, mais je n"ai pas compris grand chose
                suis à la bourre là. Je m'y remet et je t'en parle ce soir ou demain matin;
                à +
                crdlmnt
                0
                1. Bonjour Vaucluse,

                  Me voici de retour après ces 15 jours de repos.

                  Pour faire suite à nos derniers échanges, je t'adresse en lien de téléchargement le fichier relatif au classement automatique. Quant au choix de l'option, je n'ai pas de préférence particulière.

                  As tu le temps de regarder pour finaliser mon projet ?

                  https://mon-partage.fr/f/t15G3zyo/
                  Cordialement Xavier
                  0
                  1. Bonjour Vaucluse,

                    Comme prévu, je t'adresse ci-dessus 2 liens de téléchargement

                    dont 1 avec des explications sur les brulages qui me posent des interogations et sur la faisabilité

                    et un autre à partir du fichier que tu m'as envoyé sur le classement automatique

                    https://mon-partage.fr/f/H35Jbn08/

                    https://mon-partage.fr/f/bv669QRW/

                    il n'y a pas le feu, je rentre pas avant le 21.

                    Cordialement

                    xavier
                    0
                    1. Bonjour Vaucluse,

                      Les 2 variantes me conviennent. Je n'i pas de préférences particulières. Je te laisse libre de ton choix.

                      En revanche, paour ma part, je pars quelques jours jeudi soir et rentre pas avant le 21. Donc il n'y a pas le feu. De toute façon, j'ai encore plein de chose à voir sur ce développement.

                      Je vais réfléchir, et je te renverrai un fichier en partage.

                      Je dois travailler sur les "Brulages" soit un fichier classé par ordre "Equipe", et Alpha qui recensent les rencontres jouées des joueurs avec leur N° Equipes.

                      Profite de ses qq joueurs de repos.

                      Cordialement

                      xavier
                      0
                      1. Contributeur
                        OK , mais malheureusement, je n'aurais pas le temps de prendre ça en compte avant de partir quelques jours. Je ne reviens pas avant jeudi ou vendredi,

                        Par contre j'ai mis en place ce que j'envisageais pour le principe, je joins le fichier avec quelques commentaires. Tu devrais arriver à extirper quelque chose de tout ça

                        je n'ai pas le temps pour le classement alpha, si tu ne trouves pas, je m'y remettrais jeudi, il doit y avoir une solution.

                        pour la formule en feuille Clt équipes M6:M15, je suis parti sur le fait qu'un départage de 2-8 est équivalent à 8-2 (donc, tu verras, une vlorisation de +8200 dans les deux cas)

                        si ce n'est pas le cas, tu peux la changer en simplifiant comme suit en M6:
                        =SIERREUR(E6*10000+(GAUCHE(K6;1)&DROITE(K6;1))*100;"")

                        elle classera en premier le départage qui a le plus fort chiffre en premier (soit 8-2 avant 2-8)

                        et si tu veux inverser le départage, tu places un - au lieu de + après E6*1000

                        mais dans tous les cas, ça ne fonctionne pas si une des valeurs est >9. Si cela est possible, nous pourrons régler ça jeudi ou vendredi

                        https://mon-partage.fr/f/0hYgptKi/

                        vois bien les commentaires dans les pages

                        bon WE si tu ne reviens pas avant

                        crdlmnt

                        0
                        1. Contributeur
                          une petite variante avant de partir
                          j'ai modifié la formule en colonne B de Ctl car l'autre ne dépassait pas deux exaequo
                          j'ai mis en place une varianet de calcul en M et une autre option possible en N
                          à toi de voir
                          je reviens jeudi
                          Bonne semaine
                          https://mon-partage.fr/f/rB7zvp2q/
                          0
                      2. 1°) Il faut les classer en dans un 1er temps par ordre décroissant (du + grand au + petit) et en cas d'égalité, il faut les départager en prenant le départage.

                        A titre info, le départage c'est le nombre de matchs gagnés/perdus (mais la je rentre dans les techniques) c'est comme le goal average (comme en ce moment).

                        Celui qui à le meilleur départage est 1er (8-2), le 2ème (6-4) et le 3ème (2-8)

                        Concernant le tri sur la colonne B (effectivement c'est pas nécessaire).

                        En cas d'exaequo complet c'est au nombre de set (mais dans ce cas il faut oublier). Donc, on met les équipes à la suite.

                        Non, il n'est pas nécessaire de trier la feuille de calcul Clt Equipe si tu arrives à éditer le tableau de Match8 ou 10 dans le bon ordre.

                        En revanche c'est pas possible au départ de classer la liste de la feuille CLUB EQUIPE de E13 à E22 selon alpha (car les clubs sont tirer au sort par la ligue et je suis obligé d'en tenir compte). Perso, je m'en fou, j'ai jamais compris pourquoi.

                        J'espère que j'ai été plus clair
                        0
                        1. Contributeur
                          effectivement, Excel demande si on veut trier les données comme des nombres, et ça peut fonctionner,
                          • mais dans quel ordre?.. pour quelqu'un qui n'y connait rien, quel est le plus grand quel est le plus petit? soit donc pour être plus clair: dans quel ordre doit on classer dans par exemple le tableau de Match8, les lignes 17,22,33 qui ont chacune 6 points

                          et en commentaire, pour continuer, quelle est la logique du classement de la colonne B de Ctrl équipes quand on voit par exemple les valeurs entre le 5° ligne 8 et le 6° ligne 9, alors qu'ils ont tous les ceux un départage de 6-4, que le 56° à 6 points alors que le 5° n'en a que 3????
                          et j'en rajoute encore: en cas d'égalité de points, et vu le nota à droite du tableau, les départages 4-6 et 6-4 sont ils à considéré comme identique
                          et au final on fait quoi en cas d'exaequo complet
                          • et question suivante:

                          est il besoin de trier le tableau de Clt équipes si on arrive à éditer le tableau de Match8 ou 10 dans le bon ordre? Sachant que le tri sur formule est assez délicat pour les évolutions suivantes
                          • et dernière question:

                          dans tous les cas, est il admissible de ne classer le 3° rang(donc alpha) uniquement avec la première lettre du nom ( sachant que ce serait un cas ou en priorité le nombre de points est identique, le départage est identique, c e qui réduit fortement les occurrences
                          ou alors, est il possible au départ de classer la liste de la feuille CLUB EQUIPE de E13 à E22 pselon alpha, ce qui réglerait tou

                          à te lire sur ces trois points

                          0
                          1. Bon ben,je crois que j'ai trouvé le truc.

                            Le tri, il faut le faire dans l'onglet Clt équipe sur la plage C6- k15 par :
                            1°) Points du plus grand au plus petit
                            2°) Départage du plus grand au plus petit (format texte) et il le fait bien
                            3°) Par équipe par ordre Alpha

                            Après le PB c'est qu'il faut reporter les données de Clt équipe vers Match_8eq et 10eq
                            0
                            1. Contributeur
                              empoté peut être pas, va savoir ( :-))
                              .....mais en retour un fichier qui montre ce que ça donne avec les manips préconisées dans la feuille Mtch8-eq (Rt14...etc.....)
                              https://mon-partage.fr/f/6aTDraVr/
                              Ceci dit, pour Excel 2-8 n'est pas une valeur numérique classable, et dans la rubrique "départage", justement (rang 2 du classement) quel est l'argument qui permet de classer????
                              qui dit que 2-8 est plus grand que 8-2 où l'inverse!
                              Sachant que là, ton interlocuteur (moi donc) ne connait absolument rien au truc qui consiste à gagner quoique ce soit en tapant dans une balle ou un ballon, enfin un machin rond qui fait ce qu'il veut, avec un instrument quelconque, (ou avec les pieds, c'est la mode pour le moment!)
                              1
                              1. Re,

                                Ben désolé, malgré que je mets en format standart dans la feuille Clt équipes et que je réécris ma formule rien n'y fait. De plus si dans le départage je met 2-8 cela me transforme en 2 aout.

                                Je dois probablement être empoter.

                                Pour l'argumentation, il faut trier par :

                                1°) Points du plus grand au plus petit

                                2°) Départage du plus grand au plus petit
                                3°) Par équipe par ordre Alpha

                                Merci
                                0
                                1. Contributeur
                                  Re

                                  il ne va pas chercher dans la feuille Ctl équipes la valeur voulue tout simplement parce que ta cellule est en format texte et donc, n'affiche que le texte de la formulelpasse ta cellule en format "standard" et réécris ta formule tu verras que ça fonctionne
                                  maintenant pour classer ça, il faut avoir un ou plusieurs arguments et là, merci de préciser quels ils sont
                                  je pense qu'un fois ça connu, nous pourrons ressortir le tableau L24:T33 automatiquement sans macro à partir de la feuille Clt équipes K6:K15
                                  mais il faut connaitre l'argumentation!
                                  à te lire
                                  crdlm,nt

                                  1
                                  1. Bonjour Vaucluse,

                                    Oui c'est très bien, j'apprécie fortement.

                                    Encore 2 petits tri !! lol

                                    Dans l'onglet match_8eq et 10 eq est il possible d'automatiser le classement des équipes au vue des résultats soit par :

                                    - Points du plus grand au plus petit

                                    - Départage du plus grand au plus petit (sur ce point je ne comprends pas pourquoi il ne va pas chercher la valeur dans "Clt équipes" comme le reste

                                    - Equipe par ordre Alpha

                                    Toujours pareil, la feuille est protégée, je laisse libre uniquement le cadre pour les informations et les observations.

                                    Le départage des équipes et rentré manuellement dans l'onglet ""Clt équipes"" trop compliqué à faire.

                                    Puis je pense que ce sera tout pour ce week_end.

                                    Il me reste 1 semaine avant les vacances, même si j'y suis toute l'année. Je pars dans le beau département qu'est ton pseudo à St Saturnin .......

                                    Merci pour ton dévouement

                                    Lien : https://mon-partage.fr/f/dG8qxIgZ/
                                    0
                                    1. Contributeur
                                      me revoilà avec la proposition complète incluant les dix tableaux et la protection avec mot de passe (fichier Rt11......)

                                      https://mon-partage.fr/f/EHStAR3h/

                                      rappel du système
                                      • chaque tableau est classé uniquement sur la colonne nom, les formules fonctionnant pour aligner le reste
                                      • le classement est lancé par double clic sur la cellule titre d'un tableau "nom et prénom"

                                      (on peut faire ça avec un simple clic en modifiant le code mac ro sur la ligne de titre
                                      etdonc
                                      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
                                      devient
                                      Private Sub Worksheet_BeforeClick(ByVal Target As Range, Cancel As Boolean)
                                      • le code est visible via clic droit sur onglet et "visualiser le code"

                                      pour garantir la protection par mot de passe miiux vaut masquer VBA en lecture
                                      reviens si ça ne convient pas
                                      crdlmnt
                                      1
                                      • 1
                                      • 2