TRIER

Bonjour à tous,

Une fois de plus, je viens vous solliciter.
J'ai un classeur avec à l'intérieur plusieurs onglets.
Chaque onglets contient un tableau.
TOUS les tableaux sont identiques sur la conception mais pas sur la longueur.
Dans la largeur les tableaux vont de la colonne A à AH.
En cours de mois, il se peut que l'un des commerciaux apporte de nouveaux contrats, ou modifications.
Ces modifications ne sont pas forcément dans l'ordre des dates (colonne A)
Je voudrai donc une macro qui me fasse le tri croissant de :
la cellule A7 à la dernière ligne écrite du tableau de la colonne AH.

Espérant avoir été assez clair et précis,
MERCI de votre aide.
Dany.

Configuration: Windows / Firefox 67.0

8 réponses

  1. Bonjour,

    Est-ce qu'il s'agit d'une plage ou d'un Tableau, au sens Excel 2007 et versions postérieures) du terme ?

    Cordialement.

    Daniel
    0
    1. Pardon, désolé danielc0,
      je t'ai répondu, mais je ne sais pas ce qui c'est passé, très certainement j'ai dû oublié de valider,
      c'est pourquoi, je pense la réponse n'apparait pas.
      Tu peux avoir un complément d'information en lisant ma réponse un peu plus bas à Frenchie83.
      Encore MILLE excuses.
      0
  2. Hello, bonjour à tous,

    Vraiment PERSONNE pour m'aider ?
    Merci de votre réponse.
    0
    1. Bonjour,

      Vous n'avez pas répondu à la question posée Danielc0
      Plage (sous forme de tableau) ou Tableau (structuré)?
      en attendant voici une procédure pour le cas "Plage (sous forme de tableau)",

      A tester
      Sub Tri_Plage()
          Application.ScreenUpdating = False
          For i = 1 To Sheets.Count
              Sheets(i).Select
              Range("A2:AH" & [A1].CurrentRegion.Rows.Count + 1).Sort [A1], 1
          Next i
      End Sub


      Cdlt
      0
      1. Bonjour et merci Frenchie83,

        En fait non ce n'est pas ça que je voudrai.
        TOUS mes tableaux sont IDENTIQUES.
        De la colonne A à la colonne AH.
        SAUF le nombre de lignes, qui en fonction de l'ancienneté peut être + ou - important.
        Ma zone de tri va de la cellule A7 à la dernière ligne écrite de la colonne A et étendue à la colonne AH.
        Pourquoi la dernière ligne écrite de la colonne A ?
        Car dans mon tableau la colonne A représente la date, c'est donc forcément la première cellule remplie.
        Ce qui n'est pas le cas de la colonne AH. (cette colonne est un total, qui peut être = à 0 ou vierge)
        De plus sous mon tableau il y a d'autres renseignements et eux je ne veux pas qu'ils soient triés.
        et ensuite faire un tri ascendant de la colonne A.
        Voilà j'espère avoir été plus clair.
        Merci.
        0
      2. @Dany02_110Bonjour,

        En fait, à ma connaissance, je ne pense pas qu'il soit possible de trier une partie d'un tableau, ou alors, tes données commencent en A7 ?. Pour être sûr qu'il s'agit d'un "tableau", clique dedans. Un onglet "Création de tableau" apparaît dans le ruban :


        Daniel
        0
      3. @danielc0OUI danielc0, les données à trier commencent en A7 comme inscrit juste au dessus.
        Malheureusement NON, je ne veux pas et je ne peux pas utiliser la création de tableau car celui-ci IMPOSE deux couleurs et moi il m'en faut plus.
        0
    2. De plus sous mon tableau il y a d'autres renseignements et eux je ne veux pas qu'ils soient triés.
      et ensuite faire un tri ascendant de la colonne A. Voilà j'espère avoir été plus clair.
      Pas vraiment.

      Une représentation d'un de vos tableaux aiderait considérablement à la compréhension du problème et offrirait un gain de temps non négligeable dans sa résolution.
      0
      1. Désolé pour cette réponse si tardive, j'ai dû m'absenter.
        J'ai fais une extraction de deux tableaux, mais je ne sais pas comment vous les joindre.
        Comment fait-on ?
        0
      2. @Dany02_110Essaie :

        Sub Tri()
          Dim DerLigne As Long
          DerLigne = Range("A7", Cells(Rows.Count, 1)).Find("*", , , , xlByRows, xlPrevious).Row
          Range("A7:AH" & DerLigne).Sort [A7], xlAscending, Header:=xlNo
        End Sub
        0
      3. Bonjour danielc0,

        SUPER ! ça fonctionne impeccable.
        Je n'ai pas eu le temps de le regarder et de le tester hier, je viens donc de le faire maintenant.
        SUBLIME, ça marche du tonnerre.
        Un GRAND MERCI à vous deux, Frenchie83 et danielc0,
        une GROSSE épine du pied enlevée.
        Encore sincèrement MERCI à tous les deux.
        0
    3. Voici comment joindre un fichier via mon-partage.fr :

      Étape 1 : clic sur« CHOISIR UN FICHIER » ; sélectionnez le fichier à joindre.

      Étape 2 : descendre, cliquez sur "Uploader"

      Etape3: copiez le lien fourni et coller ici dans la réponse
      0
      1. https://mon-partage.fr/f/jOGERDXD/
        0
      2. J'espère que ça à marché ?
        0
      3. Voilà donc je voudrai (je souhaiterai) que la macro me fasse pour l'onglet " MOI ", un tri à partir de la cellule A7 jusque la dernière ligne écrite de la colonne A (ligne 314) et étendue jusqu'à la colonne AH pour garder les données respectives de chacun.
        Idem pour " TOI " de la cellule A7 à la dernière ligne écrite de la colonne A ( ligne 57) et étendue jusqu'à la colonne AH pour garder les données respectives de chacun.
        Je sais que ça marche, je l'ai déjà vu, notamment avec " derlig " comme dans ma macro ARCHIVER.
        Mais je n'arrive plus à la retrouver.
        0
    4. Voilà

      Sub Tri_Plage()
          Application.ScreenUpdating = False
          For i = 1 To Sheets.Count
              Sheets(i).Select
              Range("A7:AH" & [A7].End(xlDown).Row).Sort [A1], 1
          Next i
      End Sub


      Cdlt
      0
      1. Désolé Frenchie83, mais ça ne fonctionne pas.
        Message d'erreur "1004"
        Apparemment c'est dernière ligne de commande qui pose problème.
        Elle est surlignée en jaune.
        Range("A7:AH" & [A7].End(xlDown).Row).Sort [A1], 1
        0
    5. Sub Tri_Plage()
      Application.ScreenUpdating = False
      For i = 1 To Sheets.Count
      Sheets(i).Select
      [A6] = "x"
      Range("A7:AH" & [A7].End(xlDown).Row).Sort [A6], 1
      Next i
      End Sub
      0
      1. Désolé, EXACTEMENT le MÊME problème.
        0
    6. Bizarre, ça marche bien chez moi.

      Revoici votre fichier, modifiez des dates et la ncez la macro du module 3
      https://mon-partage.fr/f/4h3Chy0C/
      0
      1. Je viens d'essayer avec ton partage SANS le télécharger.
        Idem, ça NE fonctionne PAS.
        Franchement je ne comprends pas.
        En tout cas, MERCI pour toute l'énergie, le temps et la patience pour m'aider.
        Et pourtant je l'ai déjà vu fonctionner, mais IMPOSSIBLE de le retrouver.
        0