Pb excel virtual basique

botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
Gord21 Messages postés 928 Statut Membre -
Bonjour à tous,

J’ai un problème, assez urgent à résoudre sur Excel.
Je vous explique : L’objectif final est d’obtenir un tableur Excel avec a chaque date donnée le cours du pétrole, de l’euro dollar, de l’or, du CAC 40 etc.….
J’ai déjà téléchargé (sur Yahoo finance) les historiques de tous ces cours au jour le jour sur les 10 dernières années. Cependant, pour chacun des cours, il manque certaine dates. C'est-à-dire que par exemple le 20/10/05 je n’ai pas de cours de pétrole, ou le 12/05/09 je n’ai pas de cours du CAC 40 etc….
Au finale je me retrouve avec un tableur Excel ou les dates sont décalées :

CAC 40 Dassault Avia

Date Open Close Date Open Close

29/12/2009 3959.03 3959.98 29/12/2009 524.00 524.94
23/12/2009 3923.31 3910.75 24/12/2009 520.00 522.00
22/12/2009 3878.86 3898.38 23/12/2009 521.99 520.00
21/12/2009 3807.84 3872.06 22/12/2009 522.00 516.01
18/12/2009 3833.72 3794.44 21/12/2009 523.50 523.48
17/12/2009 3847.99 3830.82 18/12/2009 520.00 523.49
16/12/2009 3837.11 3875.82 17/12/2009 513.97 515.00
15/12/2009 3834.53 3834.09 16/12/2009 514.00 513.97
14/12/2009 3839.75 3830.44 15/12/2009 509.99 512.00
11/12/2009 3795.06 3803.72 14/12/2009 507.00 509.85
10/12/2009 3756.90 3798.38 11/12/2009 505.01 507.50
09/12/2009 3776.53 3757.39 10/12/2009 505.02 509.98

Et ceci pour des milliers de valeurs et de nombreux cours !!!

Ce que je voudrais c'est dès qu'une date n'est pas présente supprimer toutes les valeurs à cette date. Au finale je voudrai un tableau ou les dates seraient bien les unes en face des autres et ou il ne manquerait aucune valeur…
Merci beaucoup pour toute l’aide que vous pourrez m’apporter car je suis complètement perdu !!
A voir également:

17 réponses

Gord21 Messages postés 928 Statut Membre 289
 
Bonsoir,
plusieurs questions :
- Est-ce que ton ordre est toujours : Date Open Close Date ... ?
- Sur combien de colonnes ?
- Des miliers de valeurs : si tu est sur Excel 2003, tu es limité à 65536 lignes
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Oui mon ordre est toujours le même sauf pour la première colonne ou je n'ai que date open ( pas close ). Mais sinon c'est toujours pareil...

J'ai environ 3600 valeurs ( 10 ans )
0
Gord21 Messages postés 928 Statut Membre 289
 
Voici le code de la macro
Hypothèse :
La première date est à la ligne 1. Si ce n'est pas le cas, remplace la valeur.

Sub Supprimer_incompletes()
'
Dim Date_ref As Date
Dim Date_lue As Date
Dim ligne As Long
Dim offset_colonne As Long
'
ligne = 1
offset_colonne = 2
'
Date_ref = CDate(Range("A" & ligne).Value)
'
While Date_ref <> CDate(Empty)
   Date_lue = CDate(Range("A" & ligne).Offset(0, offset_colonne).Value)
   If Date_lue = CDate(Empty) Then
      ligne = ligne + 1
      offset_colonne = 2
      Date_ref = CDate(Range("A" & ligne).Value)
   Else
      If Date_lue <> Date_ref Then
         Rows(ligne).Delete Shift:=xlUp
         offset_colonne = 2
         Date_ref = CDate(Range("A" & ligne).Value)
      Else
         offset_colonne = offset_colonne + 3
      End If
   End If
Wend

End Sub
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, sa ma l'air très claire... mais ce code je le rentre ou ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai été dans virtual basique (alt f11) j'ai mi exécuté ton code, je l'ai recopié dans la macro que j'ai exécuté mais sa ne fais rien du tout .... J'ai mal fais quelque chose ? Merci beaucoup.
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Mon tableur Excel commence comme cela :

EURO/Dollar CAC 40 Dassault Avia

Date EUR/USD Date Open Close Date

29/12/2009 1.443300 29/12/2009 3959.03 3959.98 29/12/2009
23/12/2009 1.427600 23/12/2009 3923.31 3910.75 24/12/2009
22/12/2009 1.427900 22/12/2009 3878.86 3898.38 23/12/2009

et ensuite c'est tout le temps date open close date open close...

Merci !
0
Gord21 Messages postés 928 Statut Membre 289
 
Bonjour,

Si j'ai bien compris, tu as :

ligne  1 : EURO/Dollar CAC 40 Dassault Avia 
ligne  2 :
ligne  3 : Date EUR/USD Date Open Close Date 
ligne  4 :
ligne  5 :
ligne  6 : 29/12/2009 1.443300 29/12/2009 3959.03 3959.98 29/12/2009 
ligne  7 : 23/12/2009 1.427600 23/12/2009 3923.31 3910.75 24/12/2009 
ligne  8 : 22/12/2009 1.427900 22/12/2009 3878.86 3898.38 23/12/2009 

et pour la ligne 6 par exemple, tu as :
colonne A : 29/12/2009
colonne B : 1.443300
colonne C : 29/12/2009
colonne D : 3959.03
colonne E : 3959.98
colonne F : 29/12/2009 


Si c'est bien le cas, tu ouvres ton classeur, tu ouvres Visual Basic (Alt + F11). Dans le volet Projet (à gauche par défaut) tu sélectionnes ton classeur, puis Insertion / Module. Dans la fenêtre qui s'ouvre, tu colles ce code :

Sub Supprimer_incompletes()
'
Dim Date_ref As Date
Dim Date_lue As Date
Dim ligne As Long
Dim offset_colonne As Long
'
ligne = 6
offset_colonne = 2
'
Date_ref = CDate(Range("A" & ligne).Value)
'
While Date_ref <> CDate(Empty)
   Date_lue = CDate(Range("A" & ligne).Offset(0, offset_colonne).Value)
   If Date_lue = CDate(Empty) Then
      ligne = ligne + 1
      offset_colonne = 2
      Date_ref = CDate(Range("A" & ligne).Value)
   Else
      If Date_lue <> Date_ref Then
         Rows(ligne).Delete Shift:=xlUp
         offset_colonne = 2
         Date_ref = CDate(Range("A" & ligne).Value)
      Else
         offset_colonne = offset_colonne + 3
      End If
   End If
Wend

End Sub


Ensuite, tu retournes dans Excel, et tu lances la macro Supprimer_incompletes (Alt + F8)
Ca devrait fonctionner.
Sinon, tu peux mettre un lien vers ton fichier en utilisant cijoint.fr par exemple, comme ça, je peux te faire la manipulation sur ton fichier directement.
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai pratiquement sa, mais en réalité les 2 premières lignes sont vides

Ligne 3 euro dollar Cac 40 Dassault...

Et je ne m'arrête pas à Dassault ensuite il y a Dow Jones, Nasdaq, Nikkey etc....

Cela change quelque chose ?

Et dernier détail pour que tu visualise tout parfaitement : certaines base de données sont plus longues que les autres. Conclusion vers les lignes de la fin il y a par exemple " date open close RIEN RIEN RIEN date open close" etc...

En tout cas merci beaucoup pour l'aide que tu m'apporte car je suis désespéré!!
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Comment je fais pour que tu me fasse la manipulation directement ??? :)
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai fais comme tu m'as dit mais cela ne fonctionne pas, sa ne fait rien du tout en faite.
Il y a peut être des sécurité qui bloque tout ? il faut que je surligne mon classeur ..?
0
Gord21 Messages postés 928 Statut Membre 289
 
Pour les deux lignes vierges du début, oui, ça change quelque chose : il faut que tu remplace la ligne ligne = 6 par ligne = 8
Pour les dernières lignes, avec cette macro, il faudra que tu les effaces manuellement.

Sinon, pour mettre le lien, tu vas sur le site cijoint.fr, tu sélectionnes parcourir pour rechercher ton fichier puis tu sélectionnes Cliquez ici pour déposer le fichier. Ensuite, tu copies le liens et tu le postes. Comme ça, j'aurai accès à ton fichier.
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Merci !!
Voici le lien :

http://www.cijoint.fr/cjlink.php?file=cj201002/cijvp6Z8eE.xlsx
0
Gord21 Messages postés 928 Statut Membre 289
 
Pourrais-tu me le mettre en xls (enregistrer sous)
Merci
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Avec ton nouveau code il me dit " impossible d'exécuter le code en mode arrêt...

Je pensait peut être que cela serait plus simple en utilisant une base de donnée et un code SQL permettant d'afficher les cours pour les dates communes ..?

Encore merci
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
dans enregistrer sous je n'ai pas xls... j'ai plein d'autre truc mais pas sa ??
Je continue de chercher
0
Gord21 Messages postés 928 Statut Membre 289
 
C'est le Format Excel 2003
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
http://www.cijoint.fr/cjlink.php?file=cj201002/cijohrvFP9.xlsm

c'est pas tout à fais sa mais es que c'est mieux ?
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
http://www.cijoint.fr/cjlink.php?file=cj201002/cijgv3mxrL.xls

:)
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai réussi à faire marcher ton programme mais il y a quelques problèmes :
Dans un premier temps il ne voulais pas s'exécuter; j'ai alors supprimé toutes les valeurs finales pour avoir chaque colonne de la même taille. Là il c'est exécuté mais m'a tout supprimmé, ne me laissant qu'une seule ligne.
J'ai ensuite voulu opérer étape par étape : j'ai supprimé toutes les colonnes pour n'en garder que 2 et j'ai rajouté à la fin de la 2eme colonne des dates bidons ( 2012 ) pour avoir des colonnes de taille identique, là ça a un peu marché mais sa ne m'a donné que 36 lignes ( j'ai vérifié il manque des dates )...

Que faire ?

Merci !!
0
botoufu Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
En faite, je crois avoir compris que ton programme supprime les dates lorsque celle ci ne sont pas équivalente, le problème c'est que je voudrai qu'il aille chercher la date équivalente pour au final avoir toutes les dates équivalentes... Je sais pas si tu me suis ?
Je voudrai qu'il parcourt la colonne 1 qu'il regarde dans la colonne 2 si la date est équivalente. Sinon si elle n'est pas équivalente il va chercher dans la colonne la date équivalente et écrit la valeur à droite.

En faite si tu sais le faire je n'ai pas besoin que sa le fasse directement pour toute les colonne mais juste pour 2 cours ( 6 colonnes )
0
Gord21 Messages postés 928 Statut Membre 289
 
Bonjour,
J'ai un peu traîné mais voici une proposition :

http://www.cijoint.fr/cjlink.php?file=cj201002/cij0qJjZ7j.xls
Je t'ai laissé l'onglet trié.
Pour info, si tu as besoin de réutiliser la macro, elle tourne pendant environ 2 minutes. Si tu en as souvent besoin il est possible d'optimiser le code. N'hésite pas.
0