Trier par rapport a la date courante vba

hshs -  
thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

est ce qu'il y aurait quelqun qui sait comment on peut trier un range en fonction d'une année qui doit etre l annee courante c a d si je trie aujourdhui ca sera trié en fonction de 2016 et en 2017 ca sera trié en fonction de 2017..?

Merci

5 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Annee en cours:

    Sub test()
        AnCour = Year(Date)
    End Sub
    0
  2. hs
     
    Bonjour,
    Ce que j'essaye de faire c'est de trier mon tableau selon les valeurs des pays de l'annee courante cad il doit selectiner l'annee 2016 et trier les valeurs des pays par ordre descendant

    2014 2015 2016 2017
    FR 0 5 22 1
    AT 0 6 3 0
    AU 0 0 14 0
    BE 0 4 3 0
    BG 0 5 0 0
    BY 0 0 0 0
    CA 0 0 1 0
    CH 0 0 10 0
    CY 0 0 0 0
    CZ 1 11 30 0
    DE 0 12 0 0
    DK 0 0 20 0
    EE 0 2 1 0
    EL 0 3 18 0
    ES 0 8 13 0
    EU 0 0 14 0

    J ai fait ce code mais ca marche pas, Est ce que vous pourrez m'aider?
    f (CurCell.Value = Year(Now())) = True Then
    Range("D327:D375").Select
    ActiveWorkbook.Worksheets("Ratios").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Ratios").Sort.SortFields.Add Key:=Range( _
    "D328:D375"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
    With ActiveWorkbook.Worksheets("Ratios").Sort
    .SetRange Range("D327:D375")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    0
  3. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    Bonjour,

    Essayer ce code (en supposant que les années se trouvent au début de la plage considérée) :

    Sub tri()

    With ActiveWorkbook.Worksheets("Ratios").Range("D327:D375")
    Set cellule_année = .Find(Year(Date))
    .Sort key1:=cellule_année, order1:=xlAscending, Header:=xlYes
    End With

    End Sub

    0
  4. hs
     
    ca n a pas marché ca trie pas
    en plus je veux savoir comment faire pour que le programme selectionne la date courante lui meme et qu il selectionne le range a trier et non pas lui donner la wone comme ce que j qi fait D327:D375
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    Je crois comprendre que les années ne se trouvent pas à la ligne 327.
    De plus, je pense qu'il faut sélectionner la plage A327:D375 et non D327:D375.

    ci-dessous nouveau code

    Sub tri()

    ' recherche de la cellule contenant l'année en cours dans la plage de la feuille utilisée
    Set cellule_année = ActiveWorkbook.Worksheets("Ratios").UsedRange.Find(Year(Date))

    'tri de la plage A327:D375 avec pour clé la première cellule se trouvant dans la colonne de l'année
    With ActiveWorkbook.Worksheets("Ratios").Range("A327:D375")
    .Cells.Sort key1:=.Cells(1, cellule_année.Column), order1:=xlAscending, Header:=xlNo
    End With

    End Sub

    --
     
    0