Dépassement de capacité
Bonjour à tous, j'ai ce code qui appelle une fonction
Function hex_string_to_uint(data_in) As Long
hex_string_to_uint = 0
temp_str = "" & LCase(data_in)
nb_char = Len(temp_str)
i = 1
While i <= nb_char
hex_string_to_uint = hex_string_to_uint * 16
Select Case Mid(temp_str, i, 1)
Case "0"
hex_string_to_uint = hex_string_to_uint
Case "1"
hex_string_to_uint = hex_string_to_uint + 1
Case "2"
hex_string_to_uint = hex_string_to_uint + 2
Case "3"
hex_string_to_uint = hex_string_to_uint + 3
Case "4"
hex_string_to_uint = hex_string_to_uint + 4
Case "5"
hex_string_to_uint = hex_string_to_uint + 5
Case "6"
hex_string_to_uint = hex_string_to_uint + 6
Case "7"
hex_string_to_uint = hex_string_to_uint + 7
Case "8"
hex_string_to_uint = hex_string_to_uint + 8
Case "9"
hex_string_to_uint = hex_string_to_uint + 9
Case "a"
hex_string_to_uint = hex_string_to_uint + 10
Case "b"
hex_string_to_uint = hex_string_to_uint + 11
Case "c"
hex_string_to_uint = hex_string_to_uint + 12
Case "d"
hex_string_to_uint = hex_string_to_uint + 13
Case "e"
hex_string_to_uint = hex_string_to_uint + 14
Case "f"
hex_string_to_uint = hex_string_to_uint + 15
Case Else
hex_string_to_uint = hex_string_to_uint
End Select
i = i + 1
Wend
End Function
Sub macro()
data_in = "ffffffff"
result = hex_string_to_uint(data_in)
Debug.Print "Valeur de la ligne : " & result
End SubJe comprends pas pq quand j'éxecute on me renvoie un dépassement de capacité. La valeur attendue est de 4 294 967 295 (conversion de ffff_ffff en décimal) ce qui est largement compris dans un Long non ?
Merci d'avance
Bonjour Superneiluj
Le message est clair pourtant, dire que vous avez tout ce qu'il faut ici https://www.excel-pratique.com/fr/vba/variables
Supprimez le type de votre fonction
Function hex_string_to_uint(data_in)@+
Merci de ta réponse,
Mais pourquoi ça ne fonctionne pas ? j'ai essayé de le déclarer en double ça fonctionne et même sans déclaration ça fonctionne aussi.
Mais ma question c'est pq ? :)
Re,
Etes-vous allez voir ce qu'accepte une variable de type Long
La réponse est dans votre question initiale
"Contient des entiers 64 bits (8 octets) signés dont la valeur est comprise entre-9223372036854775808 et 9 223 372 036 854 775 807 (9.2... E + 18)"
Que j'ai trouvé sur le site officiel de microsoft d'où mon incompréhension
Re,
Vous confondez VBA (Visual Basic for Apllication) développement pour Office
et VB (Visual Basic) développement pour du .NET
Donc effectivement je comprends mieux
Ah oui effectivement. Merci :)
Du coup je n'ai pas de solutions pour mon problème ? Il n'existe pas de LongLong sur vba ? le double est exclu pour ce que je veux en faire
Re,
Je vous ai donné la solution au post https://forum.excel-pratique.com/s/goto/1013058
il faut enlever "As Long" à la fonction
Que voulez-vous d'autre, je ne comprends pas
@+