Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 incrementation chiffre pour renvoyer lettre

djiska

XLDnaute Junior
Bonjour

j'ai ecris un code qui entre une valeur 0 à 15 qui la retourne lorsqu'elle correspond à cette interval de 0 à 9
mais qui qui dois retourne A quand la valeur entrée est 10
B quand la valeur entrée est 11
C quand la valeur entrée est 12
ainsi de suite..

Je me suis servi de Chr mais cela ne me retourne que A.
pouvez vous m'aider !!




If nb >= 0 And nb <= 9 Then
valeurHexa = nb + i

ElseIf nb > 9 And nb <= 15 Then

valeurHexa = Chr(65 + i)
i = i + 1
end if

Call MsgBox(valeurHexa)

End Sub
 
Solution
Djiska,
Ma fonction n'est autre que la votre remaniée.
Vous n'appelez qu'une InputBox. donc dans la fonction,il n'y en a qu'une.
Testez avec l'appel de fonction ci dessous :
VB:
Sub Test()
    HexaOuPas = ValideNombreHexa(0)
End Sub
Public Function ValideNombreHexa(ByVal chaine As String) As Boolean
Dim validite As Boolean
Dim Valeur As String
Dim i As Integer
chaine = InputBox("entrer une valeur hexadecimal")
validite = False
For i = 1 To Len(chaine)
    Valeur = Val(Asc(UCase(Mid(chaine, i, 1))))
    If (Valeur >= 48 And Valeur <= 57) Or _
       (Valeur >= 65 And Valeur <= 70) Then
            validite = True
    Else
            validite = False
    End If
Next i
ValideNombreHexa = validite
End Function
Par contre si vous...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Djiska, Bonsoir MaPomme,
Si c'est pour faire de l'hexa de 0 à F alors il est plus simple d'utiliser =DECHEX(N) et sans VBA.
Ce qui fait pour 0..9 0..9 et de 10 à 15 ABCDEF.
Ou en VBA si vous y tenez :
VB:
Application.WorksheetFunction.DecHex(NombreDecimal)
 
Dernière édition:

djiska

XLDnaute Junior
Bonjour SYlvanu, Dranreb et Mapomme.
Désolé mon copié collé n'a pas marché , voila pourquoi ce n'était pas complet.
Effectivement , j'ai essayé valeurHexa = Chr(65 + nb-10) et ca marche .

Merci
 

djiska

XLDnaute Junior
Bonsoir,
Bien sur mais c'est quand même d'un autre age;
Par ex la plus classique:
https://www.commentcamarche.net/forum/affich-1038328-conversion-decimale-en-hexadecimale


aha ha je voulais s avec Vba

je essayé mais pas facile à executer sans Hex

Public Function convertirHEX (ByVal entier As Double) As String
je veux convertir un decimal en Hexadecimal

Dim exp As Double : le plus grand exposant de 16
Dim i As Integer : mon compteur
Dim chiffre As Integer


exp = Int(log16(entier))


For i = exp To 0

chiffre = Int(entier) / (16 ^ i)
convertirHEX= ChiffreHexadecimal(chiffre)
entier = entier Mod 16 ^ i

Next i

NombreDecimalAHexadecimal = Chr(65 + entier -10)
End Function

mais ca ne renvoie pas le resultat escompté
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Ca faisait longtemps que je n'ai pas joué à ça.
Un code conversion Dec Hex 32 bits, donc résultat sur 8 caractères.
Code:
Sub TestVal()   ' Convertisseur Dec Hex 32 bits ( de 0 à 2^32-1), retour sur 8 caractères.
    ValDecimal = 65535              ' Valeur à convertir
    Hexa = DecHexa(ValDecimal)      ' Chaine résultat
End Sub

Function DecHexa(N)
H = "0123456789ABCDEF"
ChaineHexa = ""
For i = 7 To 0 Step -1
    P = 16 ^ i
    L = Int(N / P)
    N = N - L * P
    ChaineHexa = ChaineHexa & Mid(H, 1 + L, 1)
Next i
DecHexa = ChaineHexa
End Function
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @djiska , à tous ,

Une fonction plus générale utilisable en VBA dans une macro ou bien directement sur la feuille de calcul.

Cette fonction convertit un entier X en un nombre en base "base".

Le code dans Module1:
Code:
Function DecToBase(x As Long, base As Long)
Dim r As Long, s As String
   If base <= 1 Or base > 36 Or x < 0 Then DecToBase = CVErr(xlErrNA): Exit Function
   Do
      r = x Mod base
      s = IIf(r <= 9, r, Chr(65 + r - 10)) & s
      x = x \ base
   Loop Until x = 0
   DecToBase = s
End Function

  • Formules sur la feuille de calcul dans les colonnes D, G, J, M, P et S.
  • Utilisation en VBA, voir le code du bouton.

nota: la base doit être comprise entre 2 et 36.
 

Pièces jointes

  • djiska- conversion Dec en Base- v1.xlsm
    40.9 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

La fonction réciproque de la précédente.
Elle convertit un nombre 'X' écrit en base 'base' vers un entier en base 10.

VB:
Function BaseToDec(ByVal x As String, ByVal base As Long)
Dim s As String, dec As Long, puiss&, i&
On Error GoTo Err001
   x = Trim(x): puiss = 1
   For i = Len(x) To 1 Step -1
      s = UCase(Mid(x, i, 1))
      Select Case s
         Case "0" To "9": dec = dec + puiss * Val(s)
         Case "A" To "Z": dec = dec + puiss * (Asc(s) - Asc("A") + 10)
         Case Else: BaseToDec = CVErr(xlErrNA): Exit Function
      End Select
      puiss = puiss * base
   Next i
   BaseToDec = dec
   Exit Function
Err001:
   BaseToDec = CVErr(xlErrNA)
End Function
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
351
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…