Tri par macro

Résolu
bonjour à tous

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

j'ai une macro ("Macro 3") qui me permet de trier différentes zones nommées dans différentes feuilles .
Hors, quand je la lance , elle ne trie que la première colonne, ce qui me décale les lignes dans les colonnes suivantes.
Une idée ?
Merci
Benoit

Edit: J'utilise cette macro ("Macro 3") car dans les feuilles Cotisations et juillet, les colonnes noms et Peloton/section dépendent de la feuille Données. Je remplis dans données, et les autres feuilles se mettent à jours.
Quand une nouvelle personne entre, je la saisie en fin de tableau dans "Données" , et ensuite avec Macro 3, elle se met dans l'ordre alphabétique dans toutes les feuilles en même temps.

5 réponses

  1. Bonjour,
    La plage à trier doit enrober toutes les colonnes concernées.
    Exemple pour la feuille "Données", les colonnes de A à J
        Worksheets("Données").Select
        DerLig = [A10000].End(xlUp).Row
        ActiveWorkbook.Worksheets("Données").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Données").Sort.SortFields.Add Key:=Range("A7"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Données").Sort
            .SetRange Range("A7:J" & DerLig)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

    Cdlt
    1. Bonjour,

      Je suis d'accord avec vous "La plage à trier doit enrober toutes les colonnes concernées". C'est bien pour cà que j'indique que zone avec noms. Dans le cas de la feuille "Données", la zone s'appelle "NomsDonnées".
      Et en plus, cela fonctionne (le tri) pour la feuille Données, mais pas pour les autres feuilles.
      J'ai essayé votre méthode, cela ne résout pas mon problème.
      En effet, votre méthode n'a pas remis dans l'ordre alphabétique, et en plus n'exclue pas les lignes vides.
      Je sais qu'il y a une possibilité avec une boucle, mais je ne sais pas faire. C'est pour ca que j'aimerais utiliser cette méthode, et trouver la solution par cette méthode.

      Merci
      Benoit
      1. Je me suis trompé dans le nom de la première colonne, il faut remplacer A par C
            Dim DerLig As Long
            Application.Calculation = xlManual
            Worksheets("Données").Select
            DerLig = [C10000].End(xlUp).Row
            ActiveWorkbook.Worksheets("Données").Sort.SortFields.Clear
            ActiveWorkbook.Worksheets("Données").Sort.SortFields.Add Key:=Range("C7"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets("Données").Sort
                .SetRange Range("C7:J" & DerLig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With

        Je vous laisse le soin d'appliquer la même méthode pour les autres feuilles.
        Par contre, je ne peux pas appliquer la macro de renommage des onglets, vu que votre fichier ne comporte que 3 feuilles alors que la macro gère jusqu'à la feuille 17.
        Cdlt
        1. J'ai fait un fichier plus allégé. Normalement il y a une quinzaine de feuilles supplémentaires avec d'autres macro.
        2. Mais je garde votre solution sous le coude
      2. Bonsoir à tous,

        Merci Frenchie83, pour votre réponse. Cela m'a permis de réfléchir. Ma solution était bonne, il fallait juste que le tri ne porte pas sur la colonne des Pelotons (P1, p2 ou p3) mais sur la colonne des noms, tout simplement.
        Merci à vous.