Boite de dialogue conversion Hexa en décimal

Bonsoir,
je suis novice dans les macro, je cherche à faire une boite de dialogue qui s'afficherait à l'ouverture du fichier permettant la conversion d'un nombre en HEXA (de 8 caractères) en un nombre en décimal (seulement l'affichage des 8 derniers caractères)
Exemple: Nombre en HEXA: 78C4D1A8 / Nombre en décimal: 26164648
Voila les fonctions basiques d'excel que j'utilise: =HEXDEC(STXT(A1;3;8))
mais là je le voudrais avec une macro et une interface type:
2 champs texte et un bouton permettant la conversion; je voudrais en plus que le chiffre convertit en décimal soit enregistré (Ctrl+C) pour permettre une recopie dans un autre document...
Merci bcp à ceux qui pourront m'aider.... je continue à chercher de mon côté (pour le moment, je n'ai sû faire que l'interface, soit pas grand chose!!!)

3 réponses

  1. Bonsoir

    merci beaucoup pour ton aide!

    je n'ai pas encore fait les tests avec ce que tu m'as communiqué, je n'ai pas été très dispo; je vais faire mes essais début janvier.
    dans tous les cas, je te tiens au courant...

    Encore merci
    0
    1. Contributeur
      J'ai oublié la recopie du résultat dans une cellule:

      'hexa-->decimal
      Private Sub CommandButton2_Click()
      If TextBox1.Text = "" Then Exit Sub
      TextBox2.Text = Hex2Dec(TextBox1.Text)
      TextBox2.Text = Right(TextBox2.Text, 8) '8 derniers caracteres
      Range("A1").Value = TextBox2.Text
      End Sub

      0
      1. Contributeur
        Bonjour,

        je t'ai fait les 2 conversions: decimal-> hexa et hexa-> decimal

        Mettre 2 boutons et 2 textBox, c'est dans le textBox1 que tu mettras les données.
        Voici le code:

        Option Explicit
        Private Sub UserForm_Initialize()
        CommandButton1.Caption = "decimal-->hexa"
        CommandButton2.Caption = "hexa-->decimal"
        End Sub
        'decimal-->hexa
        Private Sub CommandButton1_Click()
        If TextBox1.Text = "" Then Exit Sub
        TextBox2.Text = convert_decimal_hexadecimal(TextBox1.Text)
        End Sub
        'hexa-->decimal
        Private Sub CommandButton2_Click()
        TextBox2.Text = Hex2Dec(TextBox1.Text)
        TextBox2.Text = Right(TextBox2.Text, 8) '8 derniers caracteres
        End Sub
        'decimal-->hexa
        Function convert_decimal_hexadecimal(mon_nombre_decimal)
         Dim Hexa, temp
         Hexa = ""
         Do While mon_nombre_decimal > 0
         temp = Int(mon_nombre_decimal / 16)
         If mon_nombre_decimal - (temp * 16) = 10 Then
         Hexa = "A"
         ElseIf mon_nombre_decimal - (temp * 16) = 11 Then
         Hexa = "B"
         ElseIf mon_nombre_decimal - (temp * 16) = 12 Then
         Hexa = "C"
         ElseIf mon_nombre_decimal - (temp * 16) = 13 Then
         Hexa = "D"
         ElseIf mon_nombre_decimal - (temp * 16) = 14 Then
         Hexa = "E"
         ElseIf mon_nombre_decimal - (temp * 16) = 15 Then
         Hexa = "F"
         Else
         Hexa = mon_nombre_decimal - (temp * 16)
         End If
         convert_decimal_hexadecimal = Hexa & convert_decimal_hexadecimal
         mon_nombre_decimal = temp
         Hexa = ""
         Loop
        End Function
        'hexa-->decimal
        Function Hex2Dec(Hexa As String) As Double
         Dim i As Integer, Multi As Integer
         Hex2Dec = 0
         Hexa = UCase(Trim(Hexa))
         If Not Hexa Like "*[G-Z]*" Then
         For i = 1 To Len(Hexa)
         Multi = CInt("&H" & (Mid(Hexa, Len(Hexa) - i + 1, 1)))
         Hex2Dec = Hex2Dec + (Multi * 16 ^ (i - 1))
         Next i
         End If
        End Function
        

        0
        1. Contributeur
          J'ai oublié cela dans le bouton 2:

          If TextBox1.Text = "" Then Exit Sub
          0