par Michael DELIQUE » 26 Oct 2007 à 08:09
- Code : Tout sélectionner
Function CleISSN(wISSN As String) As Integer
'Déclaration Variables
Dim ISSN As String
Dim Char As String
Dim i As Integer
Dim nbCoef As Integer
On Error Goto ErreurHandle
If Trim(wISSN) = "" Then
CleISSN = -1
Exit Function
End If
'elemination des caracteres superflux
ISSN = ""
For i = 1 To Len(wISSN)
Char = Mid(wISSN,i,1)
If Char Like "[0-9]" Then
ISSN = ISSN + Ucase(Char)
End If
Char = ""
Next
'si 10 caratere c'est que la clé de controle est intégré au code ISSN
If Len(ISSN) = 8 Then
ISSN = Left(ISSN,7)
End If
If Len(ISSN) <> 7 Then
CleISSN = -1
Exit Function
End If
nbCoef = 8
For i = 1 To Len(ISSN)
Char = Mid(ISSN,i,1)
CleISSN = CleISSN + (Cint(Char)*nbCoef)
nbCoef = nbCoef-1
Char = ""
Next
ISSN = ""
CleISSN = Cstr(11 -(CleISSN Mod 11))
%REM
Wikipedia
Règle de calcul de la clé [modifier]
On attribue une pondération à chaque position (de 8 à 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. On retranche ce nombre à 11 : c'est la clé.
Exemple : Pour le numéro ISSN (à 7 chiffres) ISSN 0395-203 quelle est-la clé de contrôle ?
Exemple de calcul de clé Code ISSN 0 3 9 5 2 0 3
Pondération 8 7 6 5 4 3 2
Produit 0 21 54 25 8 0 6
Soit au total 114 dont le reste de la division euclidienne par 11 est 4. La clé de contrôle est donc 11 - 4 = 7.
L'ISSN au complet est : ISSN 0395-2037 (Il s'agit de l'ISSN du quotidien Le Monde).
Remarque : 11 étant un nombre premier, une erreur portant sur un chiffre entraînera automatiquement une incohérence du code de contrôle.
%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 !"
CleISSN = -1
Exit Function
End Function
Cordialement
Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN