Tri automatique de plusieurs listes

Fermé
Ancien1957 - Modifié le 10 oct. 2017 à 18:24
 Ancien1957 - 11 oct. 2017 à 16:51
Bonjour,
J'aimerais bien que dès que je saisis le nom d'un élève dans une liste , une macro se lance automatiquement pour trier de A à Z mes listes d'élèves.
J'ai une liste de 20 élèves dans chacune des colonnes A, B, C et D.
Chaque liste est différente d'une autre bien sûr.
Merci pour votre aide.
Passez une bonne soirée.



6 réponses

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
10 oct. 2017 à 18:44
Bonjour

Tu lances l'enregistreur de macro (Onglet développeur - Enregistrer une macro)
Tu fais tes tris alphabétiques sur chacune de tes colonnes et puis tu arrêtes l'enregistrement

Ensuite tu vas dans l'éditeur VBA (Alt+F11)
Tu sélectionnes ta feuille dans l’arborescence à gauche
Tu mets un évenement de feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
(selection Worksheet au lieu de General et Change dans Evenements)

Ensuite tu ouvres le module dans l'éditeur où se trouve la macro enregistrée que tu copies et colles dans ton évenement entre Private sub et end sub

Si tu n'y arrives pas poste un exemple de ton fichier sur cjointy.com, fais créer un lien que tu copies et reviens coller ici, je regarderai ça

Cdlmnt
Via

0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
10 oct. 2017 à 18:49
Bonjour,

Pourquoi poster sur plusieurs forums ?

Dans ton autre demande, l'on t'avait proposé un tri que tu as refusé : il te suffit de le reprendre et de l'adapter pour chacune des colonnes.
0
ancien1957 Messages postés 8 Date d'inscription jeudi 31 août 2017 Statut Membre Dernière intervention 12 octobre 2017
10 oct. 2017 à 19:33
Voici mes listes d'élèves que vous découvrirez en pièce jointe.
Merci.
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
10 oct. 2017 à 19:37
Tu ne sais pas appliquer les conseils qu'on te prodigue ...
Mais tu ne sais pas non plus joindre un document !
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
0
ancien1957 Messages postés 8 Date d'inscription jeudi 31 août 2017 Statut Membre Dernière intervention 12 octobre 2017 > Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024
10 oct. 2017 à 19:56
0
The_boss_68 Messages postés 928 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 10 juin 2024 177
10 oct. 2017 à 20:49
Bonsoir ancien1957

A tester, ne pas oublier d'activer les macros lors de l'ouverture du fichier

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

Slts
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
10 oct. 2017 à 23:14
Bonsoir The_boss_68,

Tu peux simplifier ainsi ta macro
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 5 Then
    Cells(1, Target.Column).Resize(Cells(Rows.Count, _
    Target.Column).End(xlUp).Row, 1).Sort _
    key1:=Cells(1, Target.Column), order1:=xlAscending, Header:=xlYes
End If
End Sub
0
The_boss_68 Messages postés 928 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 10 juin 2024 177 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
10 oct. 2017 à 23:52
Bonsoir gbinforme

Merci pour cette simplification, effectivement ton code est beaucoup plus léger et plus simple, c'est toujours intéressant d'apprendre merci à toi
slts
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
11 oct. 2017 à 08:08
Bonjour,

Comme ancien1957 n'a pas tout précisé, il peut même être encore simplifié pour répondre parfaitement à son souhait ainsi :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 5 Then
    Cells(1, Target.Column).Resize(21, 1).Sort _
    key1:=Cells(1, Target.Column), order1:=xlAscending, Header:=xlYes
End If
End Sub
0

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

Posez votre question
ancien1957 Messages postés 8 Date d'inscription jeudi 31 août 2017 Statut Membre Dernière intervention 12 octobre 2017
11 oct. 2017 à 10:52
ça marche bien en effet, mais mes listes doivent être limitées à 20 élèves par exemple. J'ai autre chose à écrire dans la cellule "A21" et que je n'aimerais pas qu'il figure dans ma liste.
Merci.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
11 oct. 2017 à 11:56
Bonjour,

Cela je m'en doutais bien mais il faudrait refaire ton compte car en A21 il y a le vingtième élève du fait du titre de la colonne et la dernière version ci-dessus en tient compte !
0
Vous avez raison. Donc j'écrirai en "A22" au lieu de "A21".
0