Vba - Tri sur feuille protégée

Fermé
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 - 29 juin 2018 à 12:40
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 26 juil. 2018 à 14:30
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
A voir également:

28 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
29 juin 2018 à 14:36
... et pour suivre, une petite astuce pour afficher le bas du fichier après classement
  • utilise une formule matricielle en I1, (à entrer avec ctrl+shift+enter) actif jusqu'à ligne 10000
  • s'effectue sur la dernière ligne de la macro avant protect
  • l'affichage des volets est bloqué sous la 1° ligne
  • le bouton de lancement de la macro est ramené sur la 1° ligne

https://mon-partage.fr/f/L66b3YQ5/
crdlmnt


1
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
29 juin 2018 à 14:53
Bonjour,

« Le principe de la protection n'est pas forcément utile certes mais juste une protection pour éviter de supprimer malencontreusement des données » Dans ce cas la protection est très utile, elle n'a d'ailleurs pas été remise en cause par Vaucluse (que je salue ...), ce qui l'est moins c'est le mot de passe : j'ai toujours considéré qu'une protection de feuille sans mot de passe est largement suffisante pour prévenir un utilisateur qu'il ne faut pas modifier cette cellule (avec l'avantage de ne pas avoir à se souvenir du mot de passe plusieurs années après).
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
30 juin 2018 à 08:21
Salut
..suis à la bourre ma femme m'engueule
une proposition ici:
la 1° rangée fonctionne
le classement se fait par double clic dans la cellule Nom et prénom indépendamment pour chaque tableau
reste à faire la 2° rangée
voir le code dans la feuille compo
je reviens tout à l(heure
https://mon-partage.fr/f/vRq1CdHl/
crdlm,nt
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 30 juin 2018 à 11:02
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

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

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 30 juin 2018 à 13:14
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
30 juin 2018 à 14:32
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
25 juil. 2018 à 17:31
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 25 juil. 2018 à 20:46
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 29 juin 2018 à 13:01
Bonjour
et comment lancer vous la macro de tri et surtout laquelle, car vous avez un code dans le module qui protège (tri_listing) et un code dans la feuille (tri) qui ne protège pas
donc si vous enlevez la protection pour ajouter une ligne et que vous utilisez Tri, la feuille n'est pas protégée. Elle l'est si vous utilisez Tri_listing
...et en aparté
si vous mettez un mot de passe pour protéger votre feuille, et si c'est vraiment utile, protégez aussi l'accès à VBA, sinon, il suffit d'ouvrir VBA pour le connaitre
crdlmnt

0
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
29 juin 2018 à 14:13
Bonjour à vous,

Effectivement, il y a confusion sur la macro a utilisé. Dans ce cas, il faut utiliser la macro Tri_Listing.

La macro Tri sera supprimé.

Pour autant, le PB persiste.

Concernant la protection de la feuille, le fichier sera partagé avec d'autres utilisateurs sur DROPBOX ou autre. Le principe de la protection n'est pas forcément utile certes mais juste une protection pour éviter de supprimer malencontreusement des données , les utilisateurs qui utiliseront ce fichiers ne sont guère trop aguéris.

En revanche je suis preneur pour cette information a insérer dans le code.


Egalement ne peut-on pas éviter tous ces messages d'excel et une fois le tri effectué de se positionner sur le dernier enregistrement pour un éventuel rajout.

Merci à vous

xavier
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
29 juin 2018 à 14:25
je ne comprend pas pourquoi le problème peut faire pour persister si vous avez supprimé la macro liée à la feuille

toutefois par sécurité dans l'écriture de la macro au début,ajouter la sélection de la feuille listing avant unprotect .....

il n'y a pas de code pour "cacher" le mot de passe dans les macros, mais la lecture peut être masqué
  • afficher dans VBA
  • onglet "outil"
  • propriètés de VBA project
  • dans la fenêtre onglet Protection
  • cocher verrouiller le projet pour affichage
  • mot de passe obligatoire


quant aux messages d'Excel à supprimer, précisez de quoi il s(agit.. il n'y a pas de raison qu'en l'état Excel vous envoie quoique ce soit?)

Un éventuel rajout, sauf erreur,demandera de toute façon de déprotéger la feuille, on est d'accord?
à vous lire

crdlmnt

0
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
29 juin 2018 à 17:29
Merci Vaucluse, vous êtes vraiment des cracks.

Pour ma part, je commence malgré mon manque de compétences et ce n'est pas à mon âge que je vais augmenter mes neurones. Mais au moins, cela me permets au moins de les entretenir.

Je fais cela pour une association sportive l'UFOLEP Tennis de Table.

Et pour répondre à Patrice, il y a toujours des petits malins. Donc voilà Pourquoi les MDP. Après mes MDP j'en ai que 2, je vais arriver à les retenir sauf celui de la CB.


Si je peux me permettre Vaucluse, tu m'avais déjà dépanner il y a qq Jours pour une liste déroulante sur le même fichier. Je ne veux pas tirer sur la corde mais toujours dans le même fichier dans la feuille de calcul "Compo_Equipe" il y a différentes plages "Equipes".

Je souhaiterais également les trier l'aide d'une macro. La feuille est également protégée.

La question est : Faut-il faire une macro par plage de tri ou y a t-il une possibilité pour en faire qu'une seule ?

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

Cordialement
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
29 juin 2018 à 19:21
quel est u quels sont tes arguments de tri?
(il devrait suffire, à mon avis, dans une macro "d'empiler" chaque manip tableau par tableau_soit 10 manip_pour couvrir toute la feuille)
tu en fais une, tu copies le libellé que tu colles neuf fois les uns derrière les autres et tu ajustes les limites de champ à chaque paragraphe... dix fois donc dans la macro, avant de fermer par End Sub
0
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
29 juin 2018 à 23:05
Bonsoir,

Bon ben, je ne trouve pas, j'ai essayé plusieurs fois et à chaque fois ça plante. Cela marche pour ma 1ere plage mais la seconde ??


D'abord le test sur 2 plages.

J'ai essayé aussi, par pur hasard de faire une sélection multiple mais pas possible non plus.

lien de téléchargement : https://mon-partage.fr/f/ACtYgczL/

Désolé de t’embêter probablement pour si peux.
0
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
30 juin 2018 à 12:09
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
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
30 juin 2018 à 14:03
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
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
30 juin 2018 à 16:25
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 30 juin 2018 à 17:56
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
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
30 juin 2018 à 18:24
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
30 juin 2018 à 19:03
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 1 juil. 2018 à 08:40
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
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
2 juil. 2018 à 14:44
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