Page 1 sur 1
Calcul Cle ISBN10

Publié:
25 Oct 2007 à 14:17
par Michael DELIQUE
- Code : Tout sélectionner
Function CleISBN10(wISBN As String) As String
'Déclaration Variables
Dim ISBN As String
Dim Char As String
Dim i As Integer
Dim nbCoef As Integer
Dim nbCLE As Integer
On Error Goto ErreurHandle
If Trim(wISBN) = "" Then
CleISBN10 = ""
Exit Function
End If
'elemination des caracteres superflux
ISBN = ""
For i = 1 To Len(wISBN)
Char = Mid(wISBN,i,1)
If Char Like "[0-9]" Then
ISBN = ISBN + Ucase(Char)
End If
Char = ""
Next
'si 10 caratere c'est que la clé de controle est intégré au code ISBN
If Len(ISBN) = 10 Then
ISBN = Left(ISBN,9)
End If
If Len(ISBN) <> 9 Then
CleISBN10 = ""
Exit Function
End If
nbCoef = 10
nbCLE = 0
For i = 1 To Len(ISBN)
Char = Mid(ISBN,i,1)
nbCLE = nbCLE + (Cint(Char)*nbCoef)
nbCoef = nbCoef-1
Char = ""
Next
ISBN = ""
CleISBN10 = Cstr(11 -(nbCLE Mod 11))
If CleISBN10 = "10" Then
CleISBN10 = "X"
End If
%REM
wikipédia
Calcul du chiffre clé d'un numéro ISBN à 10 chiffres [modifier]
* On attribue une pondération à chaque position (de 10 à 2 en allant en sens décroissant) et on fait la somme des produits ainsi obtenus.
* On conserve le reste de la division euclidienne de ce nombre par 11. La clé s'obtient en retranchant ce nombre à 11.
* Si le reste de la division euclidienne est 0, la clé de contrôle n'est pas 11 (11 - 0 = 11) mais 0
* De même si le reste de la division euclidienne est 1, la clé de contrôle n’est pas 10 mais la lettre X. Ceci permet donc d’avoir réciproquement pour les restes de la division 0, 1, 2, 3, ... 10 les codes 0, X, 9, 8, ... , 1.
Remarques
11 étant un nombre premier, une erreur portant sur un chiffre entraînera automatiquement une incohérence du code de contrôle.
La vérification du code de contrôle peut se faire en effectuant le même calcul sur le code ISBN complet, en appliquant la pondération 1 au dixième chiffre de la clé de contrôle (si ce chiffre clé est X, on lui attribue la valeur 10) : la somme pondérée doit alors être un multiple de 11.
Exemple
Pour le numéro ISBN (à 9 chiffres) 2-266-11156 quelle est la clé de contrôle ?
Code ISBN (exemple) 2 2 6 6 1 1 1 5 6
Pondération 10 9 8 7 6 5 4 3 2
Produit 20 18 48 42 6 5 4 15 12
Soit au total 170 dont le reste de la division euclidienne par 11 est 5.
La clé de contrôle est donc 11 - 5 = 6.
L’ISBN au complet est : 2-266-11156-6. Il s'agit ici de l'ISBN de l'édition de poche de La Chute d'Hypérion de Dan Simmons.
La vérification de la clé complète à 10 chiffres donne la somme pondérée 170 + 6 = 176, qui est bien un multiple de 11.
%END REM
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
CleISBN10 = ""
Exit Function
End Function