Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, codes sources, astuces pour VBA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2007, 09h26   #1
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 882
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 882
Points : 4 500
Points : 4 500
Par défaut [Math] Modulo de la division par 97

Bonjour,

parfois la fonction Mod qui travaille sur le type Long est en dépassement de capacité pour vérifier des clés, voici une fonction qui remédie à cette limite.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Function ResteModulo97(ByVal str As String) As Integer
 
Dim i As Integer
Dim Reste As Integer
 
Reste = 0
For i = 0 To Len(str) - 1
    Reste = (Reste * 10 + CInt(Mid(str, i + 1, 1))) Mod 97
Next i
 
ResteModulo97 = Reste
 
End Function
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 19h48   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 591
Points : 1 591
bonjour Caféine,

une alternative pour résoudre le problème, est de passer par un type décimal et ça semble fonctionner pour cet usage :

Code :
1
2
3
4
5
 
Dim vNum As Variant, vTmp As Variant
vNum = CDec("783528889315111483")
vTmp = vNum / 97
Debug.Print CByte((vTmp - Int(vTmp)) * 97)
Dépassement de capacité de CDec() pour les nombres supérieurs à "79228162514264337593543950335" ou 29 chiffres.

sauf erreur,

cordialement,

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web