Classer ordre alphabétique Excel

Fil -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai beau chercher sur le web je ne trouve aucun sujet répondant à ma question, je me permet donc de créer un poste à ce sujet même si je me doute que la question ait déjà été posée...
J'ai un fichier client sur Excel 11.5.6 que je souhaite organiser par ordre alphabétique d'après une première colonne NOM. La fonction Trier existe bien pour cela mais je souhaiterais que le tri se fasse automatiquement, à chaque rajout de nom.
J'ai cru comprendre qu'il existait des codes appelés "macros", cependant je ne sais pas où les trouver...

Je vous remercie d'avance pour votre aide

1 réponse

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Oui tu as raison il faut une macro pour automatiser le processus
    Cette macro il faut la créer
    Postes un exemple allégé et anonymé de ton fichier sur cjoint.com et reviens ici indiquer le lien fourni, je regarderai comment adapter une macro à ton cas

    Cdlmnt
    Via
    0
    1. Fil
       
      Bonjour,

      Merci pour votre réponse. Voici un exemple de mon fichier: http://www.cjoint.com/data/0EAqtzRa24S.htm

      Cordialement
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > Fil
         
        Re

        Ton fichier en retour avec la macro qui à chaque changement de nom effectue le tri avant l'entrée de l'activité
        https://www.cjoint.com/?0EAq6iyUskN
        Clic droit sur l'onglet Feuil1 et Visualiser le code pour voir la macro
        Pour mettre cette macro dans un autre fichier :
        ALT+F11 pour ouvrir l'éditeur VBA
        Double-clic sur la feuille concernée dans l'arborescence copier-coller la macro dans la page blanche

        Cdlmnt
        Via
        0
    2. Fil
       
      Merci beaucoup pour la création de ce macro!
      Cependant lorsque je colle
      "Rem Attribute VBA_ModuleType=VBADocumentModule
      Sub Feuil1
      Rem Private Sub Worksheet_Change(ByVal Target As Range)
      Rem If Target.Column > 1 Then Exit Sub
      Rem Dim Ligne As Long
      Rem 'recup nom
      Rem nom = Target.Value
      Rem ' classement alpha
      Rem Columns("A:H").Select
      Rem ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
      Rem ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A31") _
      Rem , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      Rem With ActiveWorkbook.Worksheets("Feuil1").Sort
      Rem .SetRange Range("A1:H31")
      Rem .Header = xlYes
      Rem .MatchCase = False
      Rem .Orientation = xlTopToBottom
      Rem .SortMethod = xlPinYin
      Rem .Apply
      Rem End With
      Rem 'Se positionne sur la ligne du nom et al colonne du prénom
      Rem Ligne = Columns(1).Find(nom, , , , xlByColumns, xlPrevious).Row
      Rem Cells(Ligne, 2).Select
      Rem End Sub
      Rem
      Rem
      Rem
      End Sub" il n'y a pas de bouton valider ou quoi dans la fenêtre donc rien ne se passe...
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > Fil
         
        Re

        Comme macro à coller tu dois n'avoir que :
        Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column > 1 Then Exit Sub
        Dim Ligne As Long
        'recup nom
        nom = Target.Value
        ' classement alpha
            Columns("A:H").Select
            ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
            ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A31") _
                , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets("Feuil1").Sort
                .SetRange Range("A1:H31")
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
         'Se positionne sur la ligne du nom et al colonne du prénom
        Ligne = Columns(1).Find(nom, , , , xlByColumns, xlPrevious).Row
        Cells(Ligne, 2).Select
        End Sub

        Bien la coller dans la feuille blanche de l'éditeur qui apparait lorsque tu cliques sur le nom de la feuille où appliquer dans l'arborescence à gauche dans l'éditeur
        Après tu fermes l'éditeur
        Lorsque tu es sur la feuille où doit s'appliquer la macro , toute modification dans la colonne A lance la macro

        Si tu n'arrives pas à l'adapter tu peux poster ton fichier réel sur cjoint.com et m'envoyer le lien par message privé pour confidentialité (clic droit sur mon pseudo en haut du message ), je regarderais

        Cdlmnt
        Via
        0