Boite de dialogue conversion Hexa en décimal

Mdelacre Messages postés 2 Statut Membre -  
Mdelacre Messages postés 2 Statut Membre -
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!!!)
A voir également:

3 réponses

cs_Le Pivert Messages postés 8437 Statut Contributeur 730
 
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
cs_Le Pivert Messages postés 8437 Statut Contributeur 730
 
J'ai oublié cela dans le bouton 2:


If TextBox1.Text = "" Then Exit Sub
0
cs_Le Pivert Messages postés 8437 Statut Contributeur 730
 
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
Mdelacre Messages postés 2 Statut Membre
 
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