Ouvrir un fichier hexa et récupérer les données

Bonjour,

J'ai actuellement un fichier .txt, en hexa qui n'est donc lisible qu'avec un logiciel d'éditeur d'hexa (comme HexEdit par exemple), cependant je souhaiterai ouvrir ce fichier avec excel en vba et copier les données pour les mettre dans une feuille du fichier, mais je ne sais pas du tout comment faire.

Ci-joint une copie du fichier Hexa.

Cordialement,
Merci d'avance.

Samuel HERVOUET

Bonsoir Samuel,

A essayer

Sub ImportHexaFile()
  Dim FichierSce As Variant
  Dim sFiltre As String
  Dim TEXT As String
  Dim FileIndex As Integer
  Dim CNT As Integer, I As Integer, N As Integer
  Dim StringArray(), TempArray(), HexArray()

  Application.ScreenUpdating = False
  ThisWorkbook.Worksheets("Feuil1").Cells.NumberFormat = "@"
  sFiltre = "Text Files (*.txt;),*.txt"
  FichierSce = Application.GetOpenFilename(sFiltre)    'Assigning the file we are opening
  If FichierSce = False Then
    'cancled input
    MsgBox "Aucun fichier sélectionné"
    Exit Sub
  End If
  FileIndex = FreeFile
  Open FichierSce For Input As FileIndex
  TEXT = Application.Trim(Input(LOF(FileIndex), FileIndex))
  CNT = Len(TEXT) - Len(Replace(TEXT, Chr(10), ""))
  StringArray = Split(TEXT, Chr(10))

  ReDim HexArray(CNT, 9)
  ReDim TempArray(9)
  For I = 1 To CNT + 1
    TempArray = Split(StringArray(I - 1), " ")
    For N = 1 To 10
      HexArray(I - 1, N - 1) = TempArray(N - 1)
      Debug.Print I & "-" & N & "=" & HexArray(I - 1, N - 1)
    Next N
  Next I
  ThisWorkbook.Worksheets("Feuil1").Range("A1").Resize(UBound(HexArray, 1) + 1, UBound(HexArray, 2) + 1).Value = HexArray
  Application.ScreenUpdating = True
End Sub

A+

Bonjour Bruno,

Je viens d'essayer, malheureusement j'ai une erreur.

image

L'erreur est sur la ligne en jaune.

image

Merci d'avance.

Re,

Bon et bien j'aurais essayé

Au delà de l'étrangeté de ta demande, j'aimerais bien savoir d'où vient ce fichier

A+

Re,

Pas de soucis, merci quand même.

C'est un fichier dont j'ai modifié les données pour confidentialité. Mais ce sont des trames de données x bits sans séparateur à la suite. Je ne peux malheureusement en dire plus.

Merci.

up

Bonjour,

Pour moi il est inutile de faire un up

Comme indiqué, au delà de l'étrangetée de votre demande, je pense que le traitement hexa de ce genre de fichier n'est pas possible

Edit : @h2so4 à une solution à apporter, merci à lui

bonjour,

une proposition à vérifier !

Sub ImportHexaFile()

    Application.ScreenUpdating = False
    sFiltre = "Text Files (*.txt;),*.txt"
    FichierSce = Application.GetOpenFilename(sFiltre)    'Assigning the file we are opening
    If FichierSce = False Then
        'cancled input
        MsgBox "Aucun fichier sélectionné"
        Exit Sub
    End If
    FileIndex = FreeFile
    Open FichierSce For Binary As FileIndex
    k = LOF(FileIndex)
    TEXT = Input(k, FileIndex)
    ReDim HexArray(Int(k / 32) + 1, 0)
    c = 1
    For i = 1 To Len(TEXT)
        ligne = ligne & Right("0" & Hex$(Asc(Mid(TEXT, i, 1))), 2) & " "
        c = c + 1
        If c > 32 Then c = 1:: HexArray(l, 0) = ligne: ligne = "": l = l + 1
    Next i

    Range("A1").Resize(UBound(HexArray, 1) + 1, UBound(HexArray, 2) + 1).Value = HexArray
    Application.ScreenUpdating = True
End Sub

up

Bonjour h2so4,

Merci pour ton retour, le code marche super bien, je l'ai juste adapté car les trames font plus de 32 octets mais sinon c'est parfait merci beaucoup !

Cordialement,
Zapsalis.

Rechercher des sujets similaires à "ouvrir fichier hexa recuperer donnees"