IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Conversion en Hexa


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Points : 17
    Points
    17
    Par défaut Conversion en Hexa
    Bonjour,

    Je souhaite convertir un nombre en hexadécimal.

    Par contre, mon nombre comporte 10 chiffres et il semble que Access n'aime pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaVar = 2450735097
    ConvertHex = Hex(MaVar)
    MsgBox ConvertHex
    VBA ajoute un # a la fin de va variante (MaVar = 2450735097#) et ça ne fonctionne pas.

    Des idées?

    Merci.

  2. #2
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour bigaccess.

    Quel est le type de "ConvertHex" ?

    Citation Envoyé par Access
    Entier long (Valeur par défaut) Stocke les nombres compris entre –2 147 483 648 et 2 147 483 647
    Sinon, il faudrait stocker ce resultat au format texte.
    Cdlt

  3. #3
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut re
    Je viens de voir dans l'aide Access que la fonction Hex renvoie une chaine de caractères (string) et l'argument peut etre numérique ou chaine
    Donc le type de données de "ConvertHex" doit etre sur string et "MaVar" aussi si il dépasse 2 147 483 647
    Cdlt2

  4. #4
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Points : 17
    Points
    17
    Par défaut Convertir en string?
    Même si je convertis ça fait la même chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ConvertHex, MaVar As String
    MaVar = 2450735097#
    ConvertHex = Hex(MaVar)
    MsgBox ConvertHex
    Ça ne fonctionne pas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 224
    Points : 544
    Points
    544
    Par défaut
    Salut,

    Si MaVar est de type String, il faut la mettre entre " ", je pense, non

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 635
    Points : 14 606
    Points
    14 606
    Par défaut
    bonsoir,
    Citation Envoyé par electrosat03 Voir le message
    Salut,

    Si MaVar est de type String, il faut la mettre entre " ", je pense, non
    @ electrosat03: cela ne changera rien car le problème est tout autre: la fonction Hex() d'Access est limitée aux entiers longs (entre -2 147 483 648 et 2 147 483 647)
    @ bigaccess: Une solution serait d'utiliser la fonction Dec2Hex() d'Excel qui accepte des plus grands nombres (entre -549 755 813 888 et 549 755 813 887):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub convHex()
    Dim ConvertHex, MaVar As String
    Dim apXls As Excel.Application
     
    MaVar = "2450735097"
    ' appel fonction Excel Dec2Hex
    ConvertHex = Excel.WorksheetFunction.Dec2Hex(MaVar)
    Set apXls = Nothing
     
    MsgBox ConvertHex
     
    End Sub
    Remarque: ce code ouvre une instance d'Excel qui sera fermée automatiquement à la fermeture de l'instance Access associée, cela évite de charger une instance à chaque appel de la procédure.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Points : 17
    Points
    17
    Par défaut ACCESS!!
    Ce n'est pas Excel c'est Access !

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,

    En découpant en deux parties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Function ToHex(pDec As Double) As String
    Const puissance As Long = 5
    Dim part1 As Long, part2 As Long
    part1 = Int(pDec / (16 ^ puissance))
    part2 = pDec - part1 * (16 ^ puissance)
    ToHex = Hex(part1) & Right(String$(puissance, "0") & Hex(part2), puissance)
    End Function
    Apparemment ça fonctionne bien mais j'ai testé rapidement.

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 635
    Points : 14 606
    Points
    14 606
    Par défaut
    bonsoir,
    Ce n'est pas Excel c'est Access !
    oui, merci j'avais compris. mais si Excel possède une fonction plus complète, autant l'utiliser, on utilise bien des API ou des commandes non Access si cela peut servir ..
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,

    Citation Envoyé par tee_grandbois Voir le message
    Remarque: ce code ouvre une instance d'Excel qui sera fermée automatiquement à la fermeture de l'instance Access associée, cela évite de charger une instance à chaque appel de la procédure.
    Où l'instance est--elle ouverte ? ApXls n'est de plus jamais utilisé.

    Ensuite le choix d'ajouter une dépendance à Excel se discute...

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 635
    Points : 14 606
    Points
    14 606
    Par défaut
    bonjour Arkham46,
    Où l'instance est--elle ouverte ? ApXls n'est de plus jamais utilisé.
    tu as raison, l'instance est ouverte ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConvertHex = Excel.WorksheetFunction.Dec2Hex(MaVar)
    donc ApXls ne sert à rien, et comme j'ai Excel en référence, c'est pour cela que l'instance reste active jusqu'à la fermeture d'Access.
    Ensuite le choix d'ajouter une dépendance à Excel se discute...
    sans doute, sauf que je ne fais qu'utiliser la fonction d'une référence de VBA.
    Ce que je trouve dommage c'est que les fonctions Hex() d'Access et Dec2Hex() d'Excel n'aient pas été mis au même "niveau"...

    Mais cela n'a plus d'importance puisque ton code fonctionne, j'étais aussi parti sur l'idée de "découper" le montant pour contourner la limitation de l'entier long, mais n'étant pas très doué en maths, je me suis perdu en route ...

    Merci pour le code
    Bonne journée
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. AnsiString et conversion en hexa
    Par steph_1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/03/2007, 10h45
  2. conversion ascii hexa
    Par sofiane61 dans le forum C
    Réponses: 4
    Dernier message: 16/08/2006, 09h28
  3. [PIC 16F84] Conversion source hexa vers asm
    Par Page35 dans le forum Autres architectures
    Réponses: 2
    Dernier message: 08/12/2005, 22h12
  4. Conversion ascii=> hexa=>binaire
    Par grunk dans le forum C++
    Réponses: 3
    Dernier message: 27/11/2005, 18h45
  5. CONVERSION ASCII => HEXA
    Par tatarifa dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 05/11/2005, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo