Déplacer en fin de tableau si

Résolu
Viking58 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   -  
Viking58 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir à toutes et tous.

Je voudrais une macro pour un bouton:

Dans ma colonne A:

1) Que tout ce qui n'est pas une date se retrouve en bas de tableau.
(après les dates)
2) Effectuer un tri sur cette colonne de la date la plus ancienne à la plus récente.
(Comme un tri A-Z)

Merci.

Bonne semaine.



--
Windows 8.1 Office 2013

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    En supposant qu'il s'agit d'un tableau multi-colonnes avec des titres de colonnes, essaies ce code
    Sub TriSpécial()
    Dim t() As Variant
    Dim r As Range
    Dim c As Long
    Dim i As Long
      
      Set r = Range("A1").CurrentRegion
      c = r.Columns.Count
      r.Resize(, 2).Offset(0, c).Clear
      t = Application.Transpose(r.Columns(1).Value)
      For i = LBound(t) + 1 To UBound(t)
        If IsDate(t(i)) Then
          r(i, c).Offset(0, 1).FormulaLocal = t(i)
        Else
          r(i, c).Offset(0, 1).Value = ""
          r(i, c).Offset(0, 2).NumberFormat = r(i, 1).NumberFormat
          r(i, c).Offset(0, 2).FormulaLocal = r(i, 1).FormulaLocal
        End If
      Next
      Set r = Range("A1").CurrentRegion
      r.Sort Key1:=r(1, c + 1), Order1:=xlAscending, _
             Key2:=r(1, c + 2), Order2:=xlAscending, _
             Header:=xlYes
      r.Resize(, 2).Offset(0, c).Clear
    
    End Sub

    0
    1. Viking58 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   7
       
      Merci Patrice.

      Excel me renvoie une erreur "Erreur d'exécution 1004", référence de tri non valide:
      sur ces lignes:

      r.Sort Key1:=r(1, c + 1), Order1:=xlAscending, _
      Key2:=r(1, c + 2), Order2:=xlAscending, _
      Header:=xlYes
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      à quoi est égal r ???
      ajoutes avant le r.sort :
      MsgBox r.Address
      0
  2. Viking58 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   7
     
    Bonjour Patrice.
    Que veut dire "r" ?
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      r c'est le Range défini par l'expression
      Set r = Range("A1").CurrentRegion

      Le simple serait que tu joignes un fichier !
      0
      1. Viking58 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   7 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci Patrice, mais je ne peux pas...
        Laissons tomber ce problème. Je vais avoir bien d'autres questions à vous poser...
        0