TRIER

Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
- - Dernière réponse :  Dany02_110 - 3 juil. 2019 à 14:28
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
Afficher la suite 

8 réponses

Messages postés
640
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
18 août 2019
43
0
Merci
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
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.
Commenter la réponse de danielc0
0
Merci
Hello, bonjour à tous,

Vraiment PERSONNE pour m'aider ?
Merci de votre réponse.
Commenter la réponse de Dany02_110
Messages postés
1977
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
23 juillet 2019
220
0
Merci
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
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.
danielc0
Messages postés
640
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
18 août 2019
43 > Dany02_110 -
Bonjour,

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
> danielc0
Messages postés
640
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
18 août 2019
-
OUI 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.
Commenter la réponse de Frenchie83
Messages postés
1977
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
23 juillet 2019
220
0
Merci
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.
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 ?
danielc0
Messages postés
640
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
18 août 2019
43 > Dany02_110 -
Essaie :

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
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.
Commenter la réponse de Frenchie83
Messages postés
1977
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
23 juillet 2019
220
0
Merci
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
https://mon-partage.fr/f/jOGERDXD/
J'espère que ça à marché ?
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.
Commenter la réponse de Frenchie83
Messages postés
1977
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
23 juillet 2019
220
0
Merci
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
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
Commenter la réponse de Frenchie83
Messages postés
1977
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
23 juillet 2019
220
0
Merci
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
Désolé, EXACTEMENT le MÊME problème.
Commenter la réponse de Frenchie83
Messages postés
1977
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
23 juillet 2019
220
0
Merci
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/
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.
Commenter la réponse de Frenchie83