Faire correspondre les dates de séries de données

  • Initiateur de la discussion Initiateur de la discussion petital
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

petital

Guest
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... 😱
 
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
 
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 ! 🙂
 

Pièces jointes

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+
 

Pièces jointes

Dernière édition:
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
 
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+
 
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 ?
 
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+
 

Pièces jointes

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.
 

Pièces jointes

Dernière édition:
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+
 

Pièces jointes

Dernière édition:
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+
 
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. 🙂
 
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+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
817
Réponses
9
Affichages
539
Retour