Retraitement de données brutes

didcac

XLDnaute Occasionnel
Bonjour,
Je joins un fichier où se trouvent des données de Bourse "brutes" et que je souhaite retraiter dans une forme déterminée. C'est sans doute hyper simple pour quelqu'un d'aguerri, mais pas pour moi...
Les données à utilisées sont à gauche de la colonne rouge, et c'est sur la droite qu'il faut les retraiter.
Pour faciliter votre compréhension, j'ai commencé à recopier les 10 premières lignes telles que je les souhaite, mais comme il y en a un millier... Ainsi, vous aurez la trame à reproduire.
En gros, c'est toujours la même structure, et il faut remplir les colonnes de J à P.
Merci.
 

Pièces jointes

  • DE000CB3A182_27juin Reconfiguré cut.xls
    115.5 KB · Affichages: 60

david84

XLDnaute Barbatruc
Re : Retraitement de données brutes

Bonjour,
une macro à tester (pour la colonne date, je ne vois pas d'où tu tires tes données) :
Code:
Sub Extraction()
Dim DerLig&, tablo(), tablo2(), i&, j&, k As Byte
DerLig = Range("A" & Rows.Count).End(xlUp).Row
Range("I2:P" & DerLig).ClearContents
j = 1
For i = 1 To DerLig Step 6
    ReDim Preserve tablo(1 To j)
    tablo(j) = Format(Cells(i, 3), "hh:mm:ss")
    j = j + 1
Next i

Cells(2, 9).Resize(UBound(tablo)) = Application.Transpose(tablo)

For k = 1 To 6
    j = 1
    For i = 2 To DerLig Step 6
        ReDim Preserve tablo2(1 To j)
        tablo2(j) = Cells(i, k)
        j = j + 1
    Next i
    Cells(2, k + 9).Resize(UBound(tablo2)) = Application.Transpose(tablo2)
Next k
DerLig = Cells(2, k + 8).End(xlDown).Row
Range(Cells(2, 12), Cells(DerLig, 12)).NumberFormat = "000000.00"
Range(Cells(2, 14), Cells(DerLig, 14)).NumberFormat = "000000.00"

End Sub
A+
 
Dernière édition:

fanfan38

XLDnaute Barbatruc
Re : Retraitement de données brutes

Bonjour
Au vu des données tu as un pas de 6 entre les données
voici donc la macro qui devrait résoudre ton problème
Y a que la date????


Sub recopie()
lig = 1
derlig = Range("a65536").End(xlUp).Row
For i = 1 To derlig Step 6
Cells(lig, 10).Value = Format(Cells(i, 3).Value, "###00.0000")
Cells(lig, 11).Value = Format(Cells(i + 1, 1).Value, "###00.000")
Cells(lig, 12).Value = Format(Cells(i + 1, 2).Value, "###00.0000")
Cells(lig, 13).Value = Format(Cells(i + 1, 3).Value, "###00.0000")
Cells(lig, 14).Value = Format(Cells(i + 1, 5).Value, "###00.0000")
Cells(lig, 15).Value = Format(Cells(i + 1, 4).Value, "###00.0000")
Cells(lig, 16).Value = Format(Cells(i + 1, 6).Value, "###00.0000")
lig = lig + 1
Next
End Sub

Le format numérique peut être changé si nécessaire...
A+ François

Pardon: bonjour David84
 
Dernière édition:

didcac

XLDnaute Occasionnel
Re : Retraitement de données brutes

Bonjour à tous les deux,
Et merci pour votre réponse. Je ne m'attendais vraiment pas à une telle complexité dans la macro. Je ne risquais pas de deviner tout seul...
Information commune : pour la date, c'est normal car elle n'apparaît nulle part. C'est moi qui la mets manuellement.

1) Pour david84 : C'est bon à 95%... super. Voici les petits soucis : la colonne J renvoie un horaire au lieu de (essentiellement) le chiffre 1 (car ça correspond à A2, A8, A14, etc etc). Et, accessoirement (absolument sans importance), ça m'écrase la colonne I avec les Dates que j'ai remplie. Une idée pour corriger ça ?

2) Pour fanfan38 : Là, il y a pas mal de problèmes liés déjà à la précision des valeurs recopiées : exemple un horaire de 09:23:02 se transforme (bizarrement) en 09:23:03 !! D'autres fois, y'a 1 seconde de moins... Même souci pour les valeur 0.64 qui parfois ressortent en 0.00334. Etrange...
Quoiqu'il en soit, merci pour ton aide.

Le plus simple est peut-être de rester sur la Formule de david84 où l'on est très proche de la solution totale ?
Merci.
 

didcac

XLDnaute Occasionnel
Re : Retraitement de données brutes

Oui, c'est exact. C'est le format qui n'était pas le même partout. Et cela résout également le "problème" que j'ai évoqué pour la formule de david84. Mille excuses. Tout fonctionne.
Un grand merci à vous deux, c'est parfait maintenant.
 

Discussions similaires

Réponses
7
Affichages
337

Statistiques des forums

Discussions
312 145
Messages
2 085 762
Membres
102 966
dernier inscrit
InitialPP