Boite de dialogue conversion Hexa en décimal

Mdelacre Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Mdelacre Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
J'ai oublié cela dans le bouton 2:


If TextBox1.Text = "" Then Exit Sub
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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 Date d'inscription   Statut Membre Dernière intervention  
 
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