IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Convertir des données HEX en DEC


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut Convertir des données HEX en DEC
    Bonjour,

    Je récupère des données en hexadécimal à travers une liaison série (un Arduino en l’occurrence).
    Lorsque j'ai récupéré mes données dans le terminal je les copies et colles sous Excel.

    J'ai réussi à faire ceci pour mettre en forme mes données sous forme de 2 colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Mes données sont espacés par des espaces, j'ai fais cette partie avec l'enregistrement automatique ça fonctionne et comme je n'y comprend rien je n'y touche pas pour l'instant.

    Ensuite je cherche à connaitre mon nombre de ligne total au quelle je soustrais 1 pour avoir mon nombre de valeur (la première ligne ne compte pas). J'ai réussi grâce un tutoriel présent sur le forum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    NombreDeValeur = DerniereLigne - 1
    Les ennuis arrivent quand je dois convertir mes valeurs HEX en DEC je n'y arrive pas. La fonction HEX2DEC() n'est même pas reconnu...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub mafonction()
     
    Dim DerniereLigne As Long
    DerniereLigne = 0
    Dim NombreDeValeur As Long
    NombreDeValeur = 0
     
     
    DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    NombreDeValeur = DerniereLigne - 1
     
    For i = 2 To NombreDeValeur
    Range("C" & i).Select
    ActiveCell.FormulaR1C1 = Application.WorksheetFunction.Hex2Dec("A" & i)
    Next
     
    End Sub
    J'ai essayé ça mais ça ne donne rien du tout . Le VBA me semble super compliqué par rapport au C...

    Je commence par du "simple" pour j'espère arriver à directement acquérir en temps réel dans Excel mes données en lisant directement sur le port série mais la ...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    https://www.developpez.net/forums/d1...s/#post8134850

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Public Function TxtHexa(T As String) As String
    TxtHexa = Hex(Asc(CStr(T)))
    If Len(TxtHexa) = 1 Then TxtHexa = "0" & TxtHexa
    TxtHexa = UCase(TxtHexa)
    End Function
    Function TxtOctets(T) As Byte
    Dim H, B, C
    C = Right("00" & T, 2): H = UCase(Left(C, 1)): B = UCase(Right(C, 1))
    If IsNumeric(H) = False Then H = Asc(H) - 55
    If IsNumeric(B) = False Then B = Asc(B) - 55
    TxtOctets = CInt(H) * 16 + CInt(B)
    End Function
    Sub test()
    Dim txt As String, toto As String, H
    toto = "Il était une fois" & vbCrLf & "1 prince charment qui venait du froid ! "
    For i = 1 To Len(toto)
    If txt = "" Then txt = TxtHexa(Mid(toto, i, 1)) Else txt = txt & " " & TxtHexa(Mid(toto, i, 1))
    Next
    Debug.Print txt
    H = Split(txt, " ")
    txt = ""
    For i = 0 To UBound(H)
        If H(i) <> "" Then
            txt = txt & Chr(TxtOctets(H(i)))
        End If
    Next
    Debug.Print txt
    End Sub
    Dernière modification par Invité ; 11/05/2017 à 12h44.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut
    Merci mais je ne comprend pas ce que fais le code... Je vais laisser tomber et faire ça manuellement .

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    ce code converti de l'HEX en DEC!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub test()
    MsgBox TxtOctets("A")
    End Sub
    Function TxtOctets(T) As Byte
    Dim H, B, C
    C = Right("00" & T, 2): H = UCase(Left(C, 1)): B = UCase(Right(C, 1))
    If IsNumeric(H) = False Then H = Asc(H) - 55
    If IsNumeric(B) = False Then B = Asc(B) - 55
    TxtOctets = CInt(H) * 16 + CInt(B)
    End Function

    Nom : TesRd2.gif
Affichages : 2187
Taille : 206,2 Ko


    mais dans le poste précédant il fallait bien que je te montre que ça marchait! donc j'ai converti au préalable un texte en HEX!

    texte que j'ai converti en HEX {toto = "Il était une fois" & vbCrLf & "1 prince charment qui venait du froid ! "}
    Dernière modification par Invité ; 18/05/2017 à 13h13.

Discussions similaires

  1. [WD20E] Besoin d'aide pour afficher des données de l'arbre dans une table
    Par Guillaume Philippe dans le forum WinDev
    Réponses: 0
    Dernier message: 30/06/2016, 14h25
  2. [XL-2010] Besoin d'aide pour supprimer des lignes en VBA
    Par SimKmil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/05/2013, 08h46
  3. Besoin d'aide pour extraire des données d'une feuille à l'autre
    Par fransky dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2010, 15h03
  4. Besoin d'aide pour extraire des données
    Par marsumo dans le forum VBScript
    Réponses: 1
    Dernier message: 04/06/2008, 09h55
  5. Réponses: 3
    Dernier message: 05/12/2005, 02h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo