Dépassement capacité lors de l'utilisation d'un mod 97
Bonjour à toutes et tous,
Dans le fichier que je suis en train de créer, je dois construire une communication structurée (en colonne O ci-dessous) qui est construite comme ceci :
C'est la concaténation de la colonne H & "3" & la colonne D et les deux derniers digits sont la vérification qui est calculée à l'aide d'un Modulo 97.
Ce qui fait 2034311811 / 97 = 20972286,71134021
Ensuite 0,71134021 * 97 = 69.0000037 ce qui me donne le 69
Tout va très bien sauf qu'à un moment donné pour certains nombres visiblement trop élevés, j'ai une erreur :
L'erreur est sur cette ligne dans ma macro "creation_data"
Sheets("mep").Cells(i, 15).Value = Format(Sheets("data").Cells(f, 2) & "3" & Right(Sheets("data").Cells(f, 1).Value, 5) & (Sheets("data").Cells(f, 2) & 3 & Right(Sheets("data").Cells(f, 1).Value, 5)) Mod 97, "000000000000")Alors j'ai pas mal cherché sur le web et cela semble un problème qui arrive souvent à l'utilisation de "MOD".. mais je n'arrive pas à trouver de solution qui me convienne.. Je suis un peu bloqué..
Voici mon fichier.. soyez indulgents avec mon code, j'essaie de débuter dans VBA (depuis des années
Grand merci d'avance,
Fred
Bonjour Fredjo
Avez-vous essayé de passer par une variable bien définit plutôt que de calculer directement dans la ligne de code
A+
Bonjour,
J'ai lu qu'il était impossible d'utiliser mod avec des nombres supérieur à la capacité d'une variable LONG donc quand on arrive dans la boucle à i = 13 et f = 8, l'opération devient 7111311813 mod 97 et 71113111813 est bien trop grand.
Tu peux donc tout simplement remplacer tous tes mod par "a - Int(a / 97) * 97" en ajoutant une variable DOUBLE avant et en lui donnant la valeur Sheets("data").Cells(f, 2) & 3 & Right(Sheets("data").Cells(f, 1).Value, 5)
Ou si tu veux que ça soit encore plus incompréhensible utiliser directement Sheets("data").Cells(f, 2) & 3 & Right(Sheets("data").Cells(f, 1).Value, 5) - int(Sheets("data").Cells(f, 2) & 3 & Right(Sheets("data").Cells(f, 1).Value, 5)/97)*97 mais bon...
Bonjour BrunoM45 et Flo Bru
Oui c'était ma prochaine étape (la déclaration).. mais j'avais lu comme Flo Bru qu'il était impossible d'utiliser MOD avec des grands nombres..
Et donc nous avons la même conclusion, qu'il vaut mieux passer par un calcul dans passer par MOD.
Pour mon code incompréhensible Flo Bru, oui je sais
Je fais avec les moyens du bord car je suis tjs pressé par le temps.. mais quand ça marche, ça marche
Je vous remercie tous les deux pour vos réponses. J'avance et je vous tiens au courant.
Fred
Merci pour l'aide.
Comme visiblement le Mod ne fonctionnait pas dans tous les cas, j'ai fait la même chose en plusieurs opérations et cela fonctionne bien.
MERCI
Fred