Conversion entier vers double mot

Bonjour à tous,

Cela fait plusieurs jours que je galère à convertir une donnée.
A partir de plusieurs logiciels et d'une valeur initiale servant d'exemple, j'ai réussi à avoir la valeur finale.
Exemple :
Valeur Initiale : 40 000
Valeur finale en 2 mots : mot1 : 0
mot2 : -25536

Mais le problème c'est que je ne sais pas comment avoir ce résultat -25536. J'ai essayé de passer en Hexa, en binaire, mais je n'y arrive pas.

Avez vous une idée pour ce développement sous VBA ?

J'ai commencé avec un bout de code dans un bouton.

A partir de la valeur décimale , je décompose 2 mots en hexa. Est ce un bon début ?

Sub Bouton78_Cliquer()

Mot_dec = 40000
Mot_hex = WorksheetFunction.Dec2Hex(Mot_dec, 8)

droite_hex = Right(Mot_hex, 4)
gauche_hex = Left(Mot_hex, 4)

End Sub

Je vous remercie.

Guillaume

Bonsoir Guillaume,

Mot2 correspond à une soustraction par 256 élevé à la puissance 2 de ta valeur initiale.

Comme le résultat est négatif Mot1 = 0. Ce qui suppose que Mot1 ne sera calculé que pour toute valeur initiale supérieure à 65536.

Bonjour X Cellus,

Je te remercie beaucoup pour ces éléments 😀

J'essaye de coder ça mardi et je te tiens au courant.

En attendant passe un excellent week-end.

Guillaume

Bonjour X Cellus et bonjour à tous.

J'ai réalisé le code et malheureusement il y a "un dépassement de capacité" sur la ligne
Mot1 = Mot_dec - 256 * 256

J'ai essayé de mettre comme dans l'aide Dim x As Long x = CLng(2000) * 365 mais cela pose problème également (ou en le passant en entier).

Sub Bouton78_Cliquer()

    Mot_dec = 40000 'valeur initiale en décimal
    Mot_hex = WorksheetFunction.Dec2Hex(Mot_dec, 8) 'conversion décimal vers hex avec 8 caractères

    Mot1_hex = Right(Mot_hex, 4) 'récupération des 4 chiffres de droite
    Mot1_dec = WorksheetFunction.Hex2Dec(Mot1_hex) 'conversion de l'hexa vers décimal
        If Mot_dec < 65536 Then
            Mot1 = Mot_dec - 256 * 256        PROBLEME : DEPASSEMENT DE CAPACITE SUR CETTE LIGNE
        End If

    Mot2_hex = Left(Mot_hex, 4)  'récupération des 4 chiffres de droite
    Mot2_dec = WorksheetFunction.Hex2Dec(Mot2_hex)  'conversion de l'hexa vers décimal

End Sub
Je te remercie de ton aide.

Passe une bonne journée.

Guillaume

J'ai réussi à corriger le problème, voici le code.

Sub Bouton78_Cliquer()
Dim Mot1 As Long
Dim Mot2 As Long
Dim carre_de_256 As Long

    carre_de_256 = 65536
    Mot_dec = 999900 'valeur initiale en décimal
    Mot_hex = WorksheetFunction.Dec2Hex(Mot_dec, 8) 'conversion décimal vers hex avec 8 caractères

    Mot1_hex = Right(Mot_hex, 4) 'récupération des 4 chiffres de droite
    Mot1_dec = WorksheetFunction.Hex2Dec(Mot1_hex) 'conversion de l'hexa vers décimal

    Mot2_hex = Left(Mot_hex, 4)  'récupération des 4 chiffres de droite
    Mot2_dec = WorksheetFunction.Hex2Dec(Mot2_hex)  'conversion de l'hexa vers décimal

        If Mot_dec < 65536 Then
            Mot1 = Mot_dec - carre_de_256
            Mot2 = 0

        Else
            Mot1 = Mot1_dec
            Mot2 = Mot2_dec

        End If

End Sub

Merci X Cells de ton aide.

Rechercher des sujets similaires à "conversion entier double mot"