XL 2010 Trie date sur colonne

Temjeh

XLDnaute Accro
Supporter XLD
Bonjour et merci d'avance

En formule car je partage le classeur sur google sheet.

J'ai des date en ligne 4 sur plusieurs colonnes de Col B à Col KN pour 300 colonne!

Tirez vers le bas en colonne A, est-ce possible d'avoir les date de la plus petite à la plus grande.
Sauf que je ne veut pas la date mais la valeur qui se trouve à la ligne 3 de sa colonne.

Merci de votre temps

Temjeh

Si pas trop clair je fait un démo
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Pas sur de tout comprendre, à essayer.

Edit: Avec ton fichier, la formule est différente.

JHA
 

Pièces jointes

  • petite valeur Temjeh.xlsx
    9.2 KB · Affichages: 41
  • trie.xlsx
    11.5 KB · Affichages: 46
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Temjeh, salut JHA,

Sur votre fichier les "dates" ne sont pas des dates mais des textes, il faut les convertir en utilisant une formule matricielle :
Code:
=INDEX(A$3:K$3;EQUIV(PETITE.VALEUR(SI(ESTNUM(1/A$4:K$4);--A$4:K$4);LIGNES(A$5:A5));--A$4:K$4;0))
A valider par Ctrl+Maj+Entrée.

Voyez le fichier (1).

Et s'il peut y avoir des dates identiques ce n'est alors pas beaucoup plus compliqué :
Code:
=INDEX(A$3:K$3;EQUIV(PETITE.VALEUR(SI(ESTNUM(1/A$4:K$4);--A$4:K$4+COLONNE(A$4:K$4)/1000000);LIGNES(A$5:A5));--A$4:K$4+COLONNE(A$4:K$4)/1000000;0))
Voyez le fichier (2).

A+
 

Pièces jointes

  • tri(1).xlsx
    17.7 KB · Affichages: 184
  • tri(2).xlsx
    17.7 KB · Affichages: 45

job75

XLDnaute Barbatruc
Re,

On peut aussi utiliser GRANDE.VALEUR et remplacer les "--" par "-".

Cela fait gagner 2 octets en mémoire, y a pas de petites économies...

Fichiers (1 bis) et (2 bis).

A+
 

Pièces jointes

  • tri(1 bis).xlsx
    17.7 KB · Affichages: 41
  • tri(2 bis).xlsx
    17.7 KB · Affichages: 43

Temjeh

XLDnaute Accro
Supporter XLD
Bonjour

Parfait je garde celle-ci au cas ou il y a lourdeur dans la feuille

Avec votre trie (2)

Il y a juste une affaire que je n'ai pas pensé, 300 colonne vers la droite.
J'ai presque tombé de ma chaise rendu au bout!

Si je fais à la place 2 sections de 150 colonne. Une comme votre solution teste ligne 4 et donne la valeur de ligne 3.

Mais aussi tester sur mon autre section en ligne. Teste en même temps la ligne 21 et donne la ligne 20

Ci-joint ma dernière demande

Merci beaucoup, le chèque est à la poste

Temjeh
 

Pièces jointes

  • tri(2).xlsx
    11.8 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re,

Pour ceux que le VBA intéresse, on peut faire facilement le tri avec cette fonction :
Code:
Function TriPlages(r As Range)
Dim col%, n&, resu(), dat$()
For Each r In r.Areas
  For col = 1 To r.Columns.Count
    If IsDate(r(2, col)) Then
      n = n + 1
      ReDim Preserve resu(1 To n)
      ReDim Preserve dat(1 To n)
      resu(n) = r(1, col)
      dat(n) = Format(r(2, col), "yyyymmddhhmmss") & Format(resu(n), "000000") 'pour classer les ex aequo
    End If
Next col, r
tri dat, resu, 1, n
TriPlages = resu 'vecteur ligne
End Function

Sub tri(a, b, gauc, droi)    ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
Le code doit être placé dans un module standard.

On peut trier autant de tableaux que l'on veut, ils doivent être séparés par au moins une ligne.

Le tri est réalisé par la classique macro Quick sort.

On peut sans inconvénient ajouter des heures aux dates.

Fichier joint.

Bonne soirée.
 

Pièces jointes

  • tri VBA(1).xlsm
    28.9 KB · Affichages: 50

Discussions similaires

Réponses
12
Affichages
325