IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Trier selon la date courante un tableau [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 61
    Par défaut Trier selon la date courante un tableau
    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?

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If (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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En utilisant l'enregistreur de macros, vous auriez pu trouver la solution.

    Une solution possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Sub TrierLeTableauParValeursDecroissantesAnneeCourante()
     
    Dim LigneDeTitre As Long
    Dim DerniereColonne As Long
    Dim DerniereLigne As Long
     
    Dim AireTableau As Range
    Dim AireATrier As Range
    Dim CelluleTableau As Range
     
    Dim Trier As Boolean
     
        With Worksheets("Ratios")
     
             LigneDeTitre = 327
             DerniereColonne = .Cells(LigneDeTitre, .Columns.Count).End(xlToLeft).Column
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row  ' En supposant qu'il n'y ait rien en dessous du tableau à trier
     
             Set AireTableau = Range(.Cells(LigneDeTitre, 1), .Cells(DerniereLigne, DerniereColonne))
     
             Trier = False
             For Each CelluleTableau In AireTableau.Rows(1).Cells
                 If IsNumeric(CelluleTableau) Then
                    If CLng(CelluleTableau) = Year(Date) Then
                       Set AireATrier = Range(.Cells(LigneDeTitre + 1, CelluleTableau.Column), .Cells(DerniereLigne, CelluleTableau.Column))
                       Trier = True
                    End If
                 End If
             Next CelluleTableau
     
             If Trier = True Then
                .Sort.SortFields.Clear
                .Sort.SortFields.Add Key:=AireATrier, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
                With .Sort
                     .SetRange AireTableau
                     .Header = xlYes
                     .MatchCase = False
                     .Orientation = xlTopToBottom
                     .SortMethod = xlPinYin
                     .Apply
                End With
                Set AireATrier = Nothing
            End If
            Set AireTableau = Nothing
     
        End With
     
    End Sub
    Cordialement.

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 61
    Par défaut maagiiiie mercii
    Bonjour
    Ca a marché Merci beaucoup mais j ai aussi essayé d enregistrer une macro pour voir comment faire mais ca m avait donné juste comment trier le range que j ai selectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Macro1tri()
    '
    ' Macro1tri Macro
    '
     
    '
        Range("D327:D500").Select
        ActiveWorkbook.Worksheets("Ratios").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Ratios").Sort.SortFields.Add Key:=Range("D327"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Ratios").Sort
            .SetRange Range("D328:D375")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        ActiveWindow.SmallScroll Down:=15
    End Sub
    Est ce que c est possible d enregistrer une macro où on demande de sélectionner l année courante? et sélectionner la range d après???
    Merci beaucoup

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par hs.hs Voir le message
    Est ce que c est possible d enregistrer une macro où on demande de sélectionner l année courante? et sélectionner la range d après???
    Dans ma solution, l'année cherchée est celle de l'année en cours. Il vous faut préciser vos deux demandes.

    Cordialement.

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 61
    Par défaut
    mais t as pas fait ça en enregistrant une macro
    Je vais reformuler Ma question Est ce qu il y ait la possibilité d enregistrer une macro en lui demandant de selectionner l annee courante?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par hs.hs Voir le message
    mais t as pas fait ça en enregistrant une macro
    Comme toujours, il vous faut utiliser, assembler et combiner plusieurs macros puis les modifier pour automatiser le fonctionnement.

    Si la question est comment trouver la cellule correspondant à l'année en cours dans la ligne de titre du tableau, sachant que la position du tableau peut varier, le code ci-dessous permet de trouver la cellule correspond à l'année si 2016 est unique (ou la première) dans l'onglet Ratios.

    Il faudra ensuite modifier le code pour que cela fonctionne à tous les coups.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Sub Macro3()
     
        Cells.Find(What:="2016", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
        Range("D328").Select
        ' ActiveCell.offset(1,0).select
        Range(Selection, Selection.End(xlDown)).Select
     
    End Sub
    Je n'ai sans doute pas répondu à la question, mais bon courage à vous.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTable] Trier selon une colonne contenant des Date
    Par Nafnlaus dans le forum Composants
    Réponses: 13
    Dernier message: 25/08/2013, 15h59
  2. Classer un tableau selon la date
    Par Stouille89 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/08/2008, 11h52
  3. Trier données Mysql selon les dates de connexion
    Par bilou95 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/10/2006, 10h44
  4. [DisplayTag] Problème pour trier les dates dans un tableau
    Par Pascale38 dans le forum Taglibs
    Réponses: 13
    Dernier message: 01/09/2006, 09h58
  5. Trier selon la date
    Par Michaël dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 15/08/2006, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo