Function Pgcd2(ByVal A As Variant, ByVal B As Variant) As String 'permet le renvoi du mode decimal 'Calcul le PGCD de deux nombres 'Variante optimisant l'Algo d'Euclide 'Déclarations Dim R 'validité paramètre If Len(A) > 28 Or Len(B) > 28 Then Pgcd2 = "#NOMBRE!": Exit Function 'les nombres <= 28 chiffres ! A = Int(Abs(CDec(A))) 'utilise le mode decimal à 28 chiffres B = Int(Abs(CDec(B))) If A = 0 And B = 0 Then Pgcd2 = "#NOMBRE!": Exit Function 'Pas de solution If A < B Then R = CDec(B): B = A: A = R 'inverse les valeurs 'Calcul Do While Abs(B) >= 1 R = A - Int(A / B + 0.5) * B 'permet le calcul modulo en mode decimal (28 chiffres) contrairement à r = a Mod b A = B B = R Loop Pgcd2 = Abs(A) End Function