Utiliser un Tableau (contenant des valeurs inialisées) dans une fonction [Résolu]

Messages postés
85
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
20 mai 2011
- - Dernière réponse : Taur33
Messages postés
85
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
20 mai 2011
- 21 déc. 2010 à 04:03
Bonjour ,
je souhaite créer la fonction suivante :
Public Function Mulpar3(ByVal A As String, ByVal B As String) As String
qui multiplie A(pouvant etre tres grand) par 3.
J'ai donc créer auparavant un tableau contenant les valeurs(0,3,6,9,12,15,18,21,24,27)
(table de 3) que j'initialise au chargement de mon Userform.
Sub inializeT()
        Dim T(9) As Byte
        For i = 0 To ubound(t)
            t(i) = 3 * i
        Next i
    End Sub


Mon problème c'est que je ne sais pas récupérer chaque valeur t(i) dans ma fonction.
Avec mon code le tableau est vidé.
Voici le code de ma fonction :
Public Function Mulpar3(ByVal A As String, ByVal B As String) As String
        Dim T(9) As Byte
        Dim Digit As Byte
        Dim unite As Byte
        Dim Retenue As Byte = 0
        Dim Result As Byte = 0

        Mulpar3 = ""

        For i = Len(A) To 1 Step -1
            Digit = CByte(Mid(A, i, 1))
            unite = T(Digit - 1)

            unite = unite + Result

            If Len(unite) = 1 Then
                Retenue = 0
            Else
                Retenue = Mid(unite, 1, 1)
            End If


            unite = CByte(Mid(unite, Len(unite), 1))

            If unite > 10 Then
                unite = Mid(unite, Len(unite), 1)
                Retenue = Retenue + 1
            End If

            Mulpar3 = Mulpar3 & Unite
        Next


    End Function


Merci d'avance.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
3
Merci
Bonsoir
La déclaration du tableau doit se faire globalement dans la partie code de l'UserForm uniquement.

Private T(9) as Byte

puis la suite

Sub inializeT()
For i = 0 To ubound(t)
t(i) = 3 * i
Next i
End Sub

Public Function Mulpar3(ByVal A As String, ByVal B As String) As String
Dim Digit As Byte
Dim unite As Byte
Dim Retenue As Byte = 0
Dim Result As Byte = 0

etc........

CNTJC

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cnt
Messages postés
85
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
20 mai 2011
0
Merci
Super ça fonctionne
Merci pour ton aide cnt.
Voici mon code revu et corrigé :
Module Module2
    Private T(9) As Byte

    Sub initializeT()
        For i = 0 To UBound(T)
            T(i) = 3 * i
        Next i
    End Sub

    Public Function Mulpar3(ByVal A As String, ByVal B As String) As String

        Dim Digit As Byte
        Dim unite As Short
        Dim Retenue As Byte = 0
        Dim unite_string As String


        Mulpar3 = ""

        For i = Len(A) To 1 Step -1
            Digit = CByte(Mid(A, i, 1))

            unite = T(Digit)

            unite = unite + Retenue
            unite_string = CStr(unite)

            If Len(unite_string) = 1 Then
                Retenue = 0
            Else

                Retenue = CByte(Mid(unite, 1, 1))
            End If


            unite = CShort(Mid(unite_string, Len(unite_string), 1))

            If CShort(unite_string) > 10 Then
                unite = CShort(Mid(unite_string, Len(unite_string), 1))

            End If

            If i = 1 And Retenue > 0 Then
                Mulpar3 = Retenue & unite & Mulpar3
            Else
                Mulpar3 = unite & Mulpar3
            End If

        Next


    End Function

End Module


Et dans le code du userForm :
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        InitializeT()
        
    End Sub
Commenter la réponse de Taur33