Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Je cherche à calculer la cle du Code Insee.

 

La règle de calcul est bonne puisqu'elle fonctionne en javascript :

(97 - Cdbl(code_insee_sans_la_cle) mod(97)) 

 

ce calcul nous donne la clé sur 2 chiffres.

 

en vbscript j'ai à chaque fois l'erreur suivante : "Dépassement de capacité...."

 

si quelqu'un à une idée...

 

MErci

 

++

Nyko

Posté(e)
Tu rentres ca dans une variable? Tu la declares comment?

je récupère le code insee (num sécurite sociale) d'un fichier csv, et je doit vérifier sa validité...

 

de ce code insee je récupère les 13 premiers chiffres et fiat le calcul :

 

exemple : (97 - Cdbl(1780529010256) mod(97))

 

 

Ce calcul me donne la clé du code insee, c'est à dire les 2 derniers chiffres, ensuite g plus qu'à comparer les chiffres du calcul et les 2 derniers chiffres du code insee qui provient du fichier csv pour savoir s'il est bon.

 

et c'est ce calcul qui me sors une erreur de dépassement de capacité, mias je vois pas pkoi !!????

Posté(e) (modifié)

Essaye de virer le CDbl des fois que... (les casts en VBS ça sert à rien du tout il me semble, et en plus ces fonctions une limite d'entier sur 16 ou 32 bits, je sais plus)

 

j'peux pas tester, désolé

Modifié par leneuf22
Posté(e)
Essaye de virer le CDbl des fois que... (les casts en VBS ça sert à rien du tout il me semble, et en plus ces fonctions une limite d'entier sur 16 ou 32 bits, je sais plus)

 

j'peux pas tester, désolé

au début je n'avais pas mis "Cdbl", j'ai testé avec "Clng" c'est pareil, Cdbl est à ma connaissance la plus grande plage de valeur...

 

Merci quand même :P

 

 

++

Nyko

Posté(e) (modifié)

Je suis presque sur qu'on peut forcer le passage, en castant tout en chaîne de caractère...

Essaye de faire un CStr sur chaque nombre, et sur le résultat du calcul aussi.

 

Du genre :

 

machin = CStr(CStr(97) - CStr(1780529010256) mod CStr(97))

C'est ultra crade, mais ça peut marcher je pense...

 

EDIT : ça marche pas...

Modifié par leneuf22
Posté(e) (modifié)

Hem, en fait ça vient de l'opérareur mod.

Mais il possible de recoder l'opérateur mod :

 

function my_mod(x, y)

while x > 0
 x = x-y
wend

if x < 0 then
 my_mod = x + y
else
 my_mod = x
end if

end function

 

ça marche...mais après test, yen a pour des années avec des nombres aussi grands...

 

 

Donc voilà une version rapide, mais que j'ai pas testée intensivement :P

 

resultat = 97 - my_mod(1780529010256, 97)


function my_mod(x, y)
dim div1, div2

div1 = CDbl(x/y)
div2 = round(div1)
if div2 > div1 then div2 = div2 - 1
div1 = div1 - div2

my_mod = CInt(div1 * y)

end function

Modifié par leneuf22
Posté(e) (modifié)

yes :P

 

je vais tester ça cet après midi....

 

merci bien en tout cas :-(

 

Ps : ca marche nickel, thx........

 

++

Nyko

Modifié par Nyk_o

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...