Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

trier des données, par colonne, pour chaque année

soif77

XLDnaute Nouveau
bonjour,

merci pour les reponses que j'ai eu recemment, cool ce forum !

j en ai une autre....lol

comment je peux faire pour, a partir d'un tableau d'archives(avec des dates donc), pouvoir classer ces infos par année ? en fait, je veux que tous les enregistrments de 2006, se mettent en colonne B, tous ceux de 2007 en colonne C etc. et encore mieux : le faire a partir de date de débu et date de fin ?

hier j ai pu grace au forum trier entre 2 dates, a partir d'une macro, et je veux maintenant pouvoir les classer par année, ou mois, peu importe

une idée

je sais pas si je suis clair, mais merci en tou ca !
 

Cousinhub

XLDnaute Barbatruc
Re : trier des données, par colonne, pour chaque année

Bonsoir,

Pour ton problème, je me sers du filtre élaboré.....

Regarde le fichier joint...

Le code :

Code:
Sub tri_annee()
Dim Annees As Object, Cel As Range
Dim It
Application.ScreenUpdating = False
Set Annees = CreateObject("Scripting.Dictionary")
Range("B1:IV1000").ClearContents
Range("A1:A" & [A65000].End(xlUp).Row).Name = "base"
Range("A2:A" & [A65000].End(xlUp).Row).Name = "base2"
For Each Cel In [base2]
    If Not Annees.Exists(Year(Cel)) Then Annees.Add Year(Cel), Year(Cel)
Next Cel
For Each It In Annees.Items
    With [IV1].End(xlToLeft)
        x = .Offset(0, 2).Resize(2, 1).Address
        y = .Offset(0, 1).Address
        Range(y).Value = [A1]
        .Offset(1, 2).FormulaR1C1 = "=YEAR(RC1)=" & It
        Range("base").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range(x), CopyToRange:=Range(y)
        Range(y) = It
    End With
Next It
Range(x).ClearContents
End Sub

le fichier exemple :

Edit, pour tester, clique sur le rectangle jaune "Date", bonne soirée
 

Pièces jointes

  • soif77_v1.zip
    9.6 KB · Affichages: 55
Dernière édition:

soif77

XLDnaute Nouveau
Re : trier des données, par colonne, pour chaque année

bhbh,

cela marche, nikel, cependant je voudrais mettre une limite à ça. C'est-à-dire que j'aimerai avoir seulement les 3 dernières années, voir les 5. Car si j'ai 10 années d'enregistrments ca me sort les 10 et pour moi c'est inutile. Saurais-tu comment faire ça ?
 

chris

XLDnaute Barbatruc
Re : trier des données, par colonne, pour chaque année

Bonjour

Ne connaissant pas le dictionnary que me fait découvrir bhbh (je le salue amicalement et le remercie de cette nouveauté pour moi), j'ai modifié son code pour limiter à 3 ans en utilisant un array
Code:
Sub tri_annee()
Dim Annees As Object, Cel As Range
Dim It
Application.ScreenUpdating = False
Set Annees = CreateObject("Scripting.Dictionary")
Range("B1:IV1000").ClearContents
Range("A1:A" & [A65000].End(xlUp).Row).Name = "base"
Range("A2:A" & [A65000].End(xlUp).Row).Name = "base2"
For Each Cel In [base2]
    If Not Annees.Exists(Year(Cel)) Then Annees.Add Year(Cel), Year(Cel)
Next Cel
'Conversion du dictionnary en array
aItems = Annees.Items
z = UBound(aItems)
For i = z - 2 To z
    It = aItems(i)
    With [IV1].End(xlToLeft)
        x = .Offset(0, 2).Resize(2, 1).Address
        y = .Offset(0, 1).Address
        Range(y).Value = [A1]
        .Offset(1, 2).FormulaR1C1 = "=YEAR(RC1)=" & It
        Range("base").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range(x), CopyToRange:=Range(y)
        Range(y) = It
    End With
Next i
Range(x).ClearContents
End Sub

PS : j'ai oublié de préciser que le code fonctionne si les dates initiale sont bien classées en ordre croissant
 
Dernière édition:

soif77

XLDnaute Nouveau
Re : trier des données, par colonne, pour chaque année

chris,
ya un pti souci pour cette commande :

It = aItems(i)
"Erreur d'exécution 13 : incompatibilité de type"

tu sais ce qu'il faut faire ?
merci
 

soif77

XLDnaute Nouveau
Re : trier des données, par colonne, pour chaque année

chris,

je sais pas si t as eu mon message d avant mais maintenat il me met ca

It = aItems(i)

"Erreur d'exécution 9 : l'indice n'appartient pas à la sélection"

Sais tu pourquoi ?

Merci en tout cas
 

Discussions similaires

Réponses
3
Affichages
463
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…