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
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 l'appelez après une InputBox pour passer la valeur, alors il y en a deux.
C'est que l'appel d'InputBox dans votre fonction n'est pas à sa place.
 

Discussions similaires

Réponses
7
Affichages
349

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan