Macro excel pour importattion txt

ASTROGHOST -  
Bidouilleu_R Messages postés 1209 Statut Membre -
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

1 réponse

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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