Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel

Advertisement

Réponse
 
LinkBack Outils de la discussion
Vieux 03/07/2009, 21h15   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juillet 2009
Messages: 4
Par défaut Faire correspondre les dates de séries de données

Bonjour à tous,

Mon fichier excel comporte des séries de données financières (indices et actions). Pour chaque indice ou chaque action, j'ai 3 colonnes : Date, Volume, Prix.

Je veux faire correspondre les dates, c'est-à-dire que sur chaque ligne je veux que les dates soient les mêmes pour chaque action/indice. Le problème c'est que les bourses ne sont pas ouvertes forcément les mêmes jours, par conséquent les dates se baladent (il ne s'agit pas seulement de supprimer les lignes pour lesquelles les dates ne correspondent pas, mais de rassembler les mêmes dates et leurs données respectives sur les mêmes lignes, et de supprimer les données dont les dates ne correspondent pas).

Le fichier se trouve ici : RapidShare: Easy Filehosting

Merci infiniment à qui peut me renseigner, je n'arrive pas à trouver de solution (et j'ai pas envie de faire ça manuellement, au vu du nombre de données vous comprendrez...). J'espère que je suis clair, je crains que non...
petital est déconnecté   Réponse avec citation
ANNONCES
Vieux 03/07/2009, 23h27   #2 (permalink)
XLDnaute Impliqué
 
Date d'inscription: mars 2008
Localisation: Un petit coin de Belgique
Messages: 704
Par défaut Re : Faire correspondre les dates de séries de données

Bonsoir petital, bienvenue sur le forum,

... Peu pratique, un fichier .xlsx ... sur un forum dédié à Excel 2003. Ne pourrais-tu alléger le fichier, l'enregistrer au format compatible XL 2003, le zipper et le déposer directement ici ?

Modeste
Modeste est déconnecté   Réponse avec citation
Vieux 04/07/2009, 04h30   #3 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juillet 2009
Messages: 4
Par défaut Re : Faire correspondre les dates de séries de données

Voici le fichier allégé compatible Excel 2003 en fichier attaché.

J'ai supprimé la plupart des données historiques qui ne sont pas nécessaires pour comprendre le problème.

Encore une fois, merci d'avance !
Fichiers attachés
Type de fichier : xls Données multicotation.xls (44,0 Ko, 8 affichages)
petital est déconnecté   Réponse avec citation
Vieux 04/07/2009, 11h40   #4 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Bonjour petital, Modeste,

Le fichier ci-joint contient ces 2 macros :

Code:
Sub USDates() 'touches Ctrl+J
'---Colonne J au format date correct---
Dim lig As Long, txt As String
For lig = 3 To Range("J65536").End(xlUp).Row
  txt = Cells(lig, 10).Text
  txt = Mid(txt, 4, 2) & "/" & Left(txt, 2) & "/" & Mid(txt, 7, 4)
  Cells(lig, 10) = Format(txt, "mm/dd/yyyy")
Next
End Sub

Sub RecoleDates() 'touches Ctrl+R
'---Supprime les lignes dont les dates ne sont pas recolées---
Dim N As Byte, F As Object, col As Byte, derlig As Long, lig As Long, i As Byte, Ndate As Byte
N = Application.Min(255, 3 * Int(Val(InputBox("Nombre de valeurs boursières à recoler :", "Recolement"))))
If N = 0 Then Exit Sub
Application.ScreenUpdating = False
Set F = Sheets("Feuil1") 'feuille copiée
Sheets("Recolement").Activate 'feuille de recopie
Cells.Clear
F.Range(F.Columns(1), F.Columns(N)).Copy Range("A1")
For col = 1 To N Step 3
  derlig = Cells(65536, col).End(xlUp).Row
  For lig = derlig To 3 Step -1
    Ndate = 0
    For i = 1 To N Step 3
      Ndate = Ndate + Application.CountIf(Columns(i), Cells(lig, col))
    Next i
    If Ndate <> N / 3 Then Cells(lig, col).Resize(, 3).Delete Shift:=xlUp
  Next lig
Next col
End Sub
1) La 1ère macro se lance par Ctrl+J. Elle est indispensable pour mettre les dates US (colonne J) au bon format date.

2) La seconde macro se lance par Ctrl+R. Une InputBox demande d'abord le nombre de valeurs boursières à recoler.

La macro ne garde que les dates qui existent pour toutes les valeurs choisies.

A+
Fichiers attachés
Type de fichier : zip petital.zip (20,0 Ko, 10 affichages)

Dernière modification par job75 ; 04/07/2009 à 12h20.
job75 est déconnecté   Réponse avec citation
Vieux 04/07/2009, 12h52   #5 (permalink)
XLDnaute Impliqué
 
Date d'inscription: mars 2008
Localisation: Un petit coin de Belgique
Messages: 704
Par défaut Re : Faire correspondre les dates de séries de données

Bonjour petital, job75, le forum,

Je ne sais pas ce qu'est le recolement de valeurs boursières (et ne suis pas certain de m'y intéresser avant longtemps) mais, si je ne craignais pas de passer pour un vieux satyre, je dirais bien à job75 (en adaptant un "code" de J. Gabin):
"t'as de belles boucles, tu sais !?"

Modeste
Modeste est déconnecté   Réponse avec citation
Vieux 04/07/2009, 13h10   #6 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Re, salut Modeste

J'ai utilisé le mot Recolement simplement pour signifier que les dates utilisées dans les valeurs choisies sont les mêmes.

A ce sujet, on notera que les dates de la colonne AE (valeur boursière n° 11) n'existent pas dans les colonnes précédentes et de ce fait on ne peut plus recoler à partir de 11.

A+
job75 est déconnecté   Réponse avec citation
Vieux 04/07/2009, 19h14   #7 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juillet 2009
Messages: 4
Par défaut Re : Faire correspondre les dates de séries de données

Merci beaucoup, job75 !

Cependant, en exécutant RecoleDates(), une erreur apparaît : dépassement de capacité. Est-ce que tu sais d'où vient cette erreur ?
petital est déconnecté   Réponse avec citation
Vieux 04/07/2009, 20h32   #8 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Re,

A priori ça pourrait venir de Ndate si une date est représentée plus de 256 fois... Je l'ai donc déclarée As Long dans le fichier joint.

Par ailleurs j'ai modifié la 1ère macro, c'est plus parlant si on l'exécute plusieurs fois :

Code:
Sub USDates() 'touches Ctrl+J
'---Colonne J au format date correct---
Dim cel As Range, txt As String
For Each cel In Range("J3:J" & Range("J65536").End(xlUp).Row)
  txt = Replace(cel.Text, "'", "")
  txt = Mid(txt, 4, 2) & "/" & Left(txt, 2) & "/" & Mid(txt, 7, 4)
  cel = cel.Text
  If cel.Text <> txt Then cel = "'" & txt
Next
End Sub
A+
Fichiers attachés
Type de fichier : zip petital.zip (20,2 Ko, 0 affichages)
job75 est déconnecté   Réponse avec citation
Vieux 05/07/2009, 00h47   #9 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Re,

En fait la variable Ndate est inutile, voyez ce fichier.

Edit : par ailleurs il fallait éviter le cas où N est négatif...

Bonne fin de soirée.
Fichiers attachés
Type de fichier : zip petital(2).zip (21,8 Ko, 7 affichages)

Dernière modification par job75 ; 05/07/2009 à 21h59.
job75 est déconnecté   Réponse avec citation
Vieux 05/07/2009, 20h27   #10 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Bonsoir le fil, le forum,

Un autre type de recolement est de se donner une série de dates de références (en colonne A), et de mettre sur la même ligne les données correspondantes des valeurs boursières.

Ce peut être intéressant si l'on veut faire des graphiques.

La macro se lance toujours par Ctrl+R.

Nota : les dates US ont été mises au bon format en colonne K (lancement de la macro de conversion par Ctrl+K).

Edit : modifié le remplissage de tablo qui était incomplet

A+
Fichiers attachés
Type de fichier : zip petital(3).zip (18,9 Ko, 7 affichages)

Dernière modification par job75 ; 06/07/2009 à 12h10.
job75 est déconnecté   Réponse avec citation
Vieux 05/07/2009, 21h23   #11 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Re,

J'ai compris d'où venait le dépassement de capacité indiqué par petital : de la variable col déclarée As Byte...

Dans les fichiers des 2 posts précédents, j'ai maintenant déclaré les variables N et col As Integer, donc plus de problème, et sur Excel 2007 on peut utiliser toutes les colonnes.

A+
job75 est déconnecté   Réponse avec citation
Vieux 05/07/2009, 22h04   #12 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juillet 2009
Messages: 4
Par défaut Re : Faire correspondre les dates de séries de données

Un grand merci à Job75 pour ce travail !

C'est exactement ce que j'essayais de faire, et au vu du code, je n'y serais pas arrivé cette année.
petital est déconnecté   Réponse avec citation
Vieux 06/07/2009, 10h27   #13 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Bonjour petital, le forum,

Une amélioration pour la version (2) : la création de 2 collections "Scripting.Dictionary" permet de diminuer beaucoup le temps de calcul.

A+
Fichiers attachés
Type de fichier : zip petital(2).zip (22,2 Ko, 6 affichages)
job75 est déconnecté   Réponse avec citation
Vieux 06/07/2009, 12h16   #14 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
Par défaut Re : Faire correspondre les dates de séries de données

Re,

J'ai fait un Edit de la version (3) du post #10, le remplissage de tablo était incomplet.

Voici de plus une version (4) qui permet de cocher en ligne 1 les valeurs boursières à étudier.

A+
Fichiers attachés
Type de fichier : zip petital(4).zip (20,4 Ko, 8 affichages)
job75 est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Faire correspondre des valeurs à des cases cochées pour en faire la somme? Pulsar Forum Excel 5 05/03/2009 17h37
Faire correspondre des données à partir d'un menu déroulant aramis67 Forum spécial EXCEL 2007 1 18/09/2008 17h02
Faire correspondre des données à partir d'un menu déroulant aramis67 Forum Excel 1 18/09/2008 16h59
Récupérér des donner et faire correspondre les dates de 2005 et 2006 Seb Forum Excel 9 07/11/2006 23h47
Faire correspondre 2 series Christophe Drezet Forum Excel Downloads - Archives 2 29/04/2004 18h28


Fuseau horaire GMT +2. Il est actuellement 11h16.


(C) 2006 Excel Downloads