Saisie de chiffre hexadécimal par macro.

pan european

XLDnaute Nouveau
Bonjour
J'ai un petit problème. Il s'agit de saisir d'un code hexadécimal et de le mettre dans une cellule.
Par la macro ci dessous, je demande à un utilisateur d'entrer un nombre hexadécimal à 6 caractères. Puis, la macro le mets dans une cellule pour action.

Mon problème est que si je mets le nombre 3949E0, la macro pense que c'est du décimal et le E0 est pris pour "exposant 0".
Donc le nombre s'inscrit 3949 dans la cellule et le calcul est faux.

Dans ma page de calcul (CONV) , la cellule B2 est paramétré ainsi:
Format>Cellule>Nombre: TEXTE
Si je rentre mon nombre 3949E0 dans directement dans cette cellule, pas de problème.
Si je passe par la macro, j'ai 3949 dans la cellule.

Bon, mon niveau n'est pas élevé en ce domaine.
Je vous remercie pour vos renseignements.

Macro (n)
=POSER.NOM("arrest";ENTRER("Entrer le code hexa";3;))
=FORMULE(arrest;CONV!B2)
=RETOUR()
 

pan european

XLDnaute Nouveau
Re : Saisie de chiffre hexadécimal par macro.

Bonjour
Voici une version "light" de mon fichier (Il y a beaucoup de choses non essentielles que j'ai viré).
En gros, sur la page "1", l'opérateur clique sur le bouton et entre un nombre hexa à 6 digits (3949ED) puis OK. Le résultat est mis dans "CONV" B1 puis traité et remis en page "1".
S'il mets 3949E0, il a la fenêtre d'erreur car le E0 est pris comme EXP 0 et dans "CONV" B1 il n'y a que 3949.
Merci coop.
PE
 

Pièces jointes

  • Convertion code.zip
    17.3 KB · Affichages: 38

homepyrof53

XLDnaute Occasionnel
Re : Saisie de chiffre hexadécimal par macro.

Bonjour,
Voici la macro réduite
Code:
Sub CONV()
'
' Sélection de la page de conversion
' Affichage de la fenêtre de saisie.
'

    Sheets("CONV").Select
' Effacement de l'ancienne donnée et mise en mode normal.
' Si affichage scientifique, 3949E0= 3949 (E=Exposant)
' (Ne fonctionne pas mieux avec cela...)
    Range("B1").Select
        Selection.ClearContents
            Selection.NumberFormat = "@"
Sheets("CONV").Cells(1, 2) = InputBox("Entrer le code Hexa")
'
'
' Test de l'intégitté du code voir le ELSE plus bas.
' Si non conforme, affichage de la fenêtre d'erreur.
' Si OK (0) décodage, sinon affichage msg d'erreur.
'
Sheets("CONV").Select
If Range("e9") = 0 Then
'
' Choix des 2 premiers digits avec ?-? par défaut.
'
Range("c1") = "?  -  ?"
If Range("c4") = 112 Then Range("c1") = "a1"
If Range("c4") = 114 Then Range("c1") = "b3"
If Range("c4") = 115 Then Range("c1") = "c5"
If Range("c4") = 116 Then Range("c1") = "d7"
'
'           Troisième digit
Cells(1, 4) = Chr(Cells(4, 4) + 65)
'
'          Quatrième digit
Cells(1, 5) = Chr(Cells(4, 5) + 65)

'          Cinquième digit
Cells(1, 6) = Chr(Cells(4, 6) + 65)


'
' Si test NOGO, affichage de la fenêtre d'erreur.
' La page CONV sera masquée et les valeurs effacées.
'
Else:
Sheets("CONV").Select
 Range("B1:F1").Select
 Application.CutCopyMode = False
  Selection.ClearContents
          Sheets("1").Select
            DialogSheets("erreur").Show
End If
'
' Si le test d'intégrité est bon.
' et l'affichage se fait normalement sur la page d'accueil.
'

            Sheets("1").Select
'
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Saisie de chiffre hexadécimal par macro.

Bonjour a tous

Peux-tu t'inspirer de ceci

Code:
Sub test()
x = InputBox("Entrez un Hexadecimal")
Range("A1").NumberFormat = "@"
Range("A1") = x
End Sub

Bien entendu il ne s'agit que d'ecrire (en A1) sans controle ni conversion ce qui peut se faire si tu le souhaites
 

Discussions similaires

Statistiques des forums

Discussions
299 729
Messages
1 978 790
Membres
206 395
dernier inscrit
Bilina