Macro excel pour importattion txt

Fermé
ASTROGHOST - Modifié par ASTROGHOST le 29/06/2010 à 22:36
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 30 juin 2010 à 13:25
Bonjour à tous,

J'aurais besoin d'un petit coup de main pour la creation d'une macro excel.
Je fais de l'astronomie et j'extrais des données de mes fichiers JPG à l'aide d'un logiciel
qui me genère un fichier txt : nom du fichier : rawdata.txt

Le fichier se presente sous cette forme :

======== J:\DCIM\100CANON/IMG_8114.JPG
CreateDate: 2000:01:01 00:00:49
ExposureTime: 120
ISO: 2000
CameraTemperature: 25 C
======== J:\DCIM\100CANON/IMG_8114.CR2
CreateDate: 2000:01:01 00:00:49
ExposureTime: 120
ISO: 2000
CameraTemperature: 25 C
======== J:\DCIM\100CANON/IMG_8115.JPG
CreateDate: 2000:01:01 00:04:50
ExposureTime: 2
ISO: 2000
CameraTemperature: 31 C
======== J:\DCIM\100CANON/IMG_8115.CR2
CreateDate: 2000:01:01 00:04:50
ExposureTime: 2
ISO: 2000
CameraTemperature: 31 C
======== J:\DCIM\100CANON/IMG_8116.JPG
CreateDate: 2000:01:01 00:04:56
ExposureTime: 120
ISO: 2000
CameraTemperature: 31 C
======== J:\DCIM\100CANON/IMG_8116.CR2
CreateDate: 2000:01:01 00:04:56
ExposureTime: 120
ISO: 2000
CameraTemperature: 31 C
======== J:\DCIM\100CANON/IMG_8117.JPG
CreateDate: 2000:01:01 00:08:58
ExposureTime: 2
ISO: 2000
CameraTemperature: 33 C

Le nombre de ligne dependra du nombre de photos analysées.

Je voudrais donc importer ces données dans une feuille excel avec une macro , qui me classerait les differentes dates d'acquisition , la durée d'exposition , la valeur ISO et la temperature.
A partir de ces tableaux , j'aimerais pourvoir effectuer le calcul de la temperature moyenne de la session , et un classement des ces temperatures dans un ordre decroissant dans ce style :
Stats for CameraTemperature...
-----------------------------------
39 C, Count: 16
38 C, Count: 12
36 C, Count: 8
25 C, Count: 6
31 C, Count: 4
33 C, Count: 4
34 C, Count: 4
41 C, Count: 4
26 C, Count: 2

et le top pouvoir tracer une courbe de temperature de la session en fonction de la date/heure d'acquisition

Un de vous serait il capable de me générer cette macro , car je n'y connais vraiment rien en programmation

Merci à tous

François


A voir également:

1 réponse

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
Modifié par Bidouilleu_R le 30/06/2010 à 13:26
un petit code que l'on peut améliorer je sais... ;-)

je nai pas mis la ligne de titre et si tu veux rajouter des données
il suffit de changer Lig=2 en Lig xxx pour commencer à la ligne xxx

A+

Sub extrait_txt() 

Dim Fichier As String 
Dim Ligne1 As String 
Dim Ligne2 As String 
Dim Ligne3 As String 
Dim Ligne4 As String 
Dim Ligne5 As String 

Dim Col As Integer 
Dim Lig As Integer 

Fichier = "C:\data\rawdata.txt" ' ici tu mets le chemin 
'et le nom de ton fichier 
Lig = 2  ' on commence en A2 
Col = 1 
Open Fichier For Input As #1 
While Not EOF(1) 
    Input #1, Ligne1 
    Input #1, Ligne2 
    Input #1, Ligne3 
    Input #1, Ligne4 
    Input #1, Ligne5 
    'récupère le nom de la photo 
     
    While Left(Ligne1, 1) <> "/" 
        Ligne1 = Right(Ligne1, Len(Ligne1) - 1) 
    Wend 
    Cells(Lig, Col) = Right(Ligne1, Len(Ligne1) - 1) 
    Col = Col + 1 
    ' la date 
    madate = Mid(Ligne2, 13, 10) 
    Cells(Lig, Col) = Replace(madate, ":", "/", 1) 
    Col = Col + 1 
    ' l'heure 
    Cells(Lig, Col) = Right(Ligne2, 8) 
    Col = Col + 1 
    'le temps d'exposition 
    While Left(Ligne3, 1) <> ":" 
        Ligne3 = Right(Ligne3, Len(Ligne3) - 1) 
    Wend 
    Cells(Lig, Col) = Right(Ligne3, Len(Ligne3) - 2) 
    Col = Col + 1 
     
    ' la sensibilité 
    While Left(Ligne4, 1) <> ":" 
        Ligne4 = Right(Ligne4, Len(Ligne4) - 1) 
    Wend 
    Cells(Lig, Col) = Right(Ligne4, Len(Ligne4) - 2) 
    Col = Col + 1 
    'la température 
    While Left(Ligne5, 1) <> ":" 
        Ligne5 = Right(Ligne5, Len(Ligne5) - 1) 
    Wend 
    Cells(Lig, Col) = Mid(Ligne5, 2, Len(Ligne5) - 2) 
    Col = 1 
    Lig = Lig + 1 
Wend 

Close #1 
End Sub
0