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.
:)
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.