Classement de données par date

Résolu
Signaler
Messages postés
10
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
8 mars 2006
-
Messages postés
10
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
8 mars 2006
-
Bonjour à tous.

J'essaie de créer une macro Excel capable de classer des données par dates. Mes données de départ sont de la forme suivante : se sont des placements financiers pour un montant X, de tel jour à tel jour :

Par exemple :
départ fin Montant
20/01/06 25/01/06 150 000 000 ?
22/01/06 24/01/06 200 000 000 ?
21/01/06 22/01/06 300 000 000 ? et ainsi de suite

je souhaite pr2senter ces données en classant le stock de placement pour chaue jour sur la période considérée. pour l'ex le résultat serai le suivant:

20/01/06 150 000 000 ?
21/01/06 450 000 000 ? (150 000 000 + 300 000 000)
22/01/06 650 000 000 ? (150 000 000 + 300 000 000 + 200 000 000)
23/01/06 350 000 000 ? (150 000 000 + 200 000 000)
24/01/06 350 000 000 ? (150 000 000 + 150 000 000)
25/01/06 150 000 000 ?

Voilou

merci de votre aide

6 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Regarde si ce qui suit peut t'aider

Note: J ai juste fait une boucle de 3 pour ton exemple mais il faudra l'etendre a toute ta plage. Mais c est juste pour le principe.

Teste sous Excel 2000.

Dim i As Integer
Dim Datei As Date
Dim PremiereD As Date
Dim DerniereD As Date
Dim DateLoop As Date
Dim tmpSomme As Long
PremiereD = "31/12/2050"
For i = 1 To 3
'Recupere la date dans la colone Date initiale
Datei = CDate(Range("A" & i))
'Memorise la date la plus ancienne
If Datei < PremiereD Then PremiereD = Datei
'Recupere la date dans la colone Date Finale
Datei = CDate(Range("B" & i))
'Memorise la date la plus recente
If Datei > DerniereD Then DerniereD = Datei
Next
'Verifie la periode
MsgBox PremiereD & "-> " & DerniereD
For DateLoop = PremiereD To DerniereD
'Remise a zero de la sommme
tmpSomme = 0
For i = 1 To 3
If DateLoop >= CDate(Range("A" & i)) And DateLoop <= CDate(Range("B" & i)) Then
tmpSomme = tmpSomme + CLng(Range("C" & i))
End If
Next
MsgBox DateLoop & ": " & tmpSomme


Next
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

Tu rajoute une variable Dim j as integer

Tu initialise j a 1 AVANT la boucle
j = 1
For DateLoop = PremiereD To DerniereD

Tu remplace la ligne "MsgBox DateLoop & ": " & tmpSomme"
Par les trois lignes suivantes

Range("D" & j).value = DateLoop
Range("E" & j).value = tmpSomme
j = j +1


Et voila les dates sont dans la colonne D et les sommes dans la colonne E (apres tu les met ou tu veux...)

@+
Julien
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
10
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
8 mars 2006

Merci Jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

Mais de rien tant que ca peut aider ;)
Messages postés
10
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
8 mars 2006

Juste un dernier petit problème, comment afficher la liste des résultats dans 2 colonnes (une date et une montant) dans la sheet excel et non dans des messages box ???

Merci!!!!!!!!!!!!
Messages postés
10
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
8 mars 2006

Nikel

merci