![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2009
Messages: 4
|
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...
|
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: mars 2008
Localisation: Un petit coin de Belgique
Messages: 704
|
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 |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2009
Messages: 4
|
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 !
|
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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
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+ Dernière modification par job75 ; 04/07/2009 à 12h20. |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: mars 2008
Localisation: Un petit coin de Belgique
Messages: 704
|
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 |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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+ |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2009
Messages: 4
|
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 ? |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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
|
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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. Dernière modification par job75 ; 05/07/2009 à 21h59. |
|
|
|
|
|
#10 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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+ Dernière modification par job75 ; 06/07/2009 à 12h10. |
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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+ |
|
|
|
|
|
#13 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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+ |
|
|
|
|
|
#14 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 871
|
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+ |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
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 |