DÉCIMAL TO HEXDECIMAL

Signaler
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
NHenry
Messages postés
14623
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54014-decimal-to-hexdecimal

NHenry
Messages postés
14623
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
138
Bonjour,

Normal que ton code arrive à plus, tu n'a pas déclaré tes variables, du coup, elles sont Variant, donc pour plus, tu passes en Double, tu perds pas mal de précision par contre.

Mets TOUJOURS Option Explicit en haut de tout tes modules de code en VB6 et VBA.
loulou27200
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
2 août 2011

Effectivement ton code est plus court
Mais je débute dans la programmation que je connais pas toutes les fonctions, ton code bloc à 2147483648 alors que le mien semble pouvoir dépasser cette valeur.
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
Presse papier toujours une faille, mais code plus court :

Option Explicit

Private Const ES_NUMBER As Long = &H2000&
Private Const GWL_STYLE As Long = -16

Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub Form_Load()
SetWindowLong Text1.hwnd, GWL_STYLE, GetWindowLong(Text1.hwnd, GWL_STYLE) Or ES_NUMBER
End Sub

Private Sub Text1_Change()
Label1.Caption = DecToHexa2(Text1.Text)
End Sub

Public Function DecToHexa2(ByRef StringNb As String) As String
If Val(StringNb) Then
DecToHexa2 = Hex$(StringNb)
Else
DecToHexa2 = "0"
End If
End Function
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
oui, mais on ne controle pas la saisie a la volée, c'est souvent vecteur d'inconfort...

rien n'empeche de saisir des caractères non autorisés via le presse papier.

voir le flag ES_NUMBER :
http://www.codyx.org/snippet_textbox-numerique-seulement_53.aspx
loulou27200
Messages postés
3
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
2 août 2011

Pourquoi ce n'est pas bon! le control text est destiné à recevoir des chiffres et non du text, je prévois que l'utilisateur se trompe!!