Exercice vb6

Fermé
pythagore1 Messages postés 25 Date d'inscription samedi 6 septembre 2008 Statut Membre Dernière intervention 2 novembre 2008 - 29 sept. 2008 à 22:36
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 30 sept. 2008 à 13:22
Bonjour, voici ce code:

Public Sub ConvertHexDecimal(CAr As String) 'Convertisseur
Dim ValDecilCAr As Integer

If ((CAr >= "0") And (CAr <= "9")) Then
ValDecilCAr = "0" & Val(CAr)
End If
If ((CAr >= "A") And (CAr <= "F")) Then
If CAr = "A" Then ValDecilCAr = 10
If CAr = "B" Then ValDecilCAr = 11
If CAr = "C" Then ValDecilCAr = 12
If CAr = "D" Then ValDecilCAr = 13
If CAr = "E" Then ValDecilCAr = 14
If CAr = "F" Then ValDecilCAr = 15
End If
alors quand j'appelle ma fonction pour m'affiche les caractérés contenus dans ma variable utile provenant de mon poste central rien ne s'affiche, la fonction d'ppel est celle-ci:

Diaze = Mid(utile, 6, 2)
If CAr = "0" Then
Call ConvertHexDecimal(CAr)
Combo5.Text = ValDecilCAr
End If

Aider moi s'il vous plais merci.

3 réponses

Si je ne me trompe pas, une sub ne renvoie pas de valeur.

2 solutions:
Soit tu déplaces ton < Combo5.Text = ValDecilCAr > dans la sub

Soit tu remplaces ta sub par une fonction ( et la il faut modifier un peu le code)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 sept. 2008 à 09:47
Bonjour,

Pourquoi ne pas déclarer ValDecilCAr en variable globale public en entête de ton module ?

;o)
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 sept. 2008 à 13:22
Bonjour,
en complément de la réponse de Polux, la sub serrait plus simple avec...
    If ((Car >= "0") And (Car <= "9")) Then
        ValDecilCAr = "0" & Val(Car)
    ElseIf ((Car >= "A") And (Car <= "F")) Then
        ValDecilCAr = Asc(Car) - 55
    End If


Et peut-être encore plus facile...
Mais il y à une erreur dans l'appel qui ne se ferra jamais puisque tu n'envoi que s'il y a "0" et ensuite
tu teste si >=0
Met un peu un exemple de ce que contient ta variable Utile.

    If CAr = "0" Then 
            Combo5.Text = ConvertHexDecimal(CAr)
    End If 


Function ConvertHexDecimal(CAr As String) As Variant
    If ((CAr >= "0") And (CAr <= "9")) Then
        ConvertHexDecimal = "0" & Val(CAr)
    ElseIf ((CAr >= "A") And (CAr <= "F")) Then
        ConvertHexDecimal = Asc(CAr) - 55
    End If
End Function


A+
-1