Validation d'un code isin

Contenu du snippet

Petite Fonction qui vérifie la validité d'un code Isin, utile pour ceux qui ont à faire des traitement en VB avec les OPCVM.

Source / Exemple :


Private Function isValidIsin(isin As String) As Boolean
    'renvoie un boolean
    
    Dim myCode          As String
    Dim checkDigit      As Integer
    Dim myCar           As String
    Dim myInt           As Integer
    Dim myTotal         As Integer
    Dim tempCK          As String
    
    isin = Trim(isin) 'Retire les espaces
    If Len(isin) = 12 Then 'verifie la taille
        tempCK = Mid(isin, 12, 1) 'extrait le checkDigit
        If IsNumeric(tempCK) Then 'on vérifie que c'est bien un numéric
            checkDigit = tempCK
            For i = 1 To 11 'Parcour la chaine de characteres
                myCar = UCase(Mid(isin, i, 1)) 'Recupere le charactere en Upper
                myInt = IIf(IsNumeric(myCar), myCar, Asc(myCar) - 55) 'Si c'est un alpha, convertion en numeric
                myCode = myCode & myInt 'Refabrique une chaine de characteres avec les alphas convertis
            Next i
            For i = 1 To Len(myCode) 'Parcour la nouvelle chaine
                If i Mod 2 = 0 Then 'si la position du charactere numeric dans la chaine de charactere est Pair
                    myInt = Mid(myCode, i, 1) 'on recupere l'entier
                Else 'si la position du charactere numeric dans la chaine de charactere est Impair
                    myInt = Mid(myCode, i, 1) * 2 'on multiplie par 2 l'entier
                    If myInt > 9 Then myInt = CInt(Mid(myInt, 1, 1)) + CInt(Mid(myInt, 2, 1))
                    'si l'entier est plus grand que 9, on additionne le chiffre des dizaines au chiffre des unités
                End If
                myTotal = myTotal + myInt 'on fait le total des entiers
            Next i
            If (checkDigit = 10 - (myTotal Mod 10)) Then isValidIsin = True
            'si le checkDigit est egale a 10 - le total des entiers modulo 10, le code Isin est bien formé
        End If

    End If
    
End Function

Conclusion :


J'espere que les commentaires sont assez clairs pour comprendre la manière dont sont fabriqués les codes Isin et l'algo utilisé.
J'espere surtout que cette fonction interressera quelqu'un.
Comme j'ai du l'écrire, je la partage.
:)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.