Tri automatique de plusieurs listes

Ancien1957 -  
 Ancien1957 -
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 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
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   Statut Contributeur Dernière intervention   4 724
 
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   Statut Membre Dernière intervention  
 
Voici mes listes d'élèves que vous découvrirez en pièce jointe.
Merci.
0
Raymond PENTIER Messages postés 58990 Date d'inscription   Statut Contributeur Dernière intervention   17 354
 
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   Statut Membre Dernière intervention   > Raymond PENTIER Messages postés 58990 Date d'inscription   Statut Contributeur Dernière intervention  
 
0
The_boss_68 Messages postés 952 Date d'inscription   Statut Membre Dernière intervention   182
 
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   Statut Contributeur Dernière intervention   4 724
 
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 952 Date d'inscription   Statut Membre Dernière intervention   182 > gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Contributeur Dernière intervention   4 724
 
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   Statut Membre Dernière intervention  
 
ç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   Statut Contributeur Dernière intervention   4 724
 
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
Ancien1957
 
Vous avez raison. Donc j'écrirai en "A22" au lieu de "A21".
0