Conversion HEX vers DEC

Conversion HEX vers DEC - VB/VBA/VBS - Programmation

Marsh Posté le 24-02-2013 à 16:37:28    

Bonjour à tous,
 
J'ai besoin d'aide pour convertir une colonne dans excel comportant 14 caractères HEXA en décimal.
Le problème est que excel s’arrête à 40 bits et j'ai besoin de 56 bits.
Je ne suis pas obligé de passer par excel, mais je ne peux pas rentrer les valeurs une par une dans la calculette, trop long car plus de 500 valeurs à convertir.
J'ai besoin d'automatiser la chose.
 
Si vous avez une idée .....
 
Merci
 

Reply

Marsh Posté le 24-02-2013 à 16:37:28   

Reply

Marsh Posté le 24-02-2013 à 17:08:16    

 
          Bonjour !     Un exemple d'une valeur Hexa et de sa conversion sont les bienvenus …
 
          C'est toujours 14 caractères ou peut-il y avoir des valeurs hexa avec moins de caractères ?
 
          Avec 14 caractères fixes, c'est facile via une formule dans une cellule !   Sinon ce sera une fonction personnalisée en VBA …


Message édité par Marc L le 24-02-2013 à 18:29:47
Reply

Marsh Posté le 24-02-2013 à 18:45:56    

L'information est tjrs sur 7 Octets.
Exemple: 0477AA8E55BF21 HEXA = 1257474322972449 DEC.
 
Merci pour ton aide.

Reply

Marsh Posté le 24-02-2013 à 19:09:31    

 
           Allez cadeau, voici ma formule convertissant jusqu'à 18 12 caractères ‼   Au delà, le résultat est faux !
 

     =HEXDEC(SI(NBCAR(C1)>9;GAUCHE(C1;NBCAR(C1)-9);0))*16^9+HEXDEC(DROITE(C1;9))


           Cette formule est pour la cellule C1, à adapter donc selon la première cellule puis à recopier vers le bas …
 
           Au fait pour ta valeur hexa elle trouve 1 257 474 322 972 450;   même résultat aussi en VBA avec deux fonctions différentes …
           Edit :  "normal" car 13 caractères hexa, voir plus bas …


Message édité par Marc L le 25-02-2013 à 15:42:16
Reply

Marsh Posté le 24-02-2013 à 19:13:52    

Je te dirais bien de tester ça :
=HEX2DEC(LEFT(A1;6))*2^32+HEX2DEC(MID(A1;7;LEN(A1)-5)) (ton nombre est en A1) mais à cause des histoires d'arrondies il a du mal :/

Reply

Marsh Posté le 24-02-2013 à 19:54:22    

Je dois avoir  le résultat exact sans arrondies ...la galère.

Reply

Marsh Posté le 25-02-2013 à 10:59:25    

 
           En fait, la conversion est bonne en VBA mais le résultat récupéré dans la feuille de calcul y est "perverti"
           à cause de la précision de 15 chiffres significatifs d'une feuille dans ma version …
 
           Donc évidemment une formule directe dans la feuille de calcul ne fonctionne pas !
 
           L'astuce consiste de renvoyer une conversion au format texte via une fonction personnalisée à insérer dans un module VBA normal :  

Code :
  1. Function Hexa2Dec(Rg As Range) As String
  2.          For Each Cel In Rg
  3.              If Len(Cel) > 15 Then Exit Function
  4.              If Len(Cel) > 0 Then V = V + CDec("&h" & Cel)
  5.          Next
  6.          Hexa2Dec = Format(V, "#,##0" )
  7. End Function

           Cette fonction assure une conversion jusqu'à 15 caractères hexa et permet aussi d'effectuer une somme d'une plage !
 
           Formule à saisir dans la première cellule de conversion si la première cellule à convertir est B2 :

     =Hexa2Dec(B2)

           Renvoyant du texte, la cellule doit être alignée à droite puis recopiée vers le bas.
 
           Pour effectuer la somme des cellules B17 à B19 par exemple :

     =Hexa2Dec(B17:B19)

           La formule fonctionne aussi s'il y a des cellules vides au sein de la plage.
 
           Si cela ne convient pas, je pense être arrivé au bout de mes ressources …
 

Reply

Marsh Posté le 27-02-2013 à 08:21:04    

Avec un peu de retard...désolé. je regarde aujourd hui. Merci du coup de mains

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed