Objet : Re : Calcul avec des grands nombres sous excel par eric45 sur 24/05/2016 10:51:12
Bonjour à tous Bonjour chrysaxel
Nous sommes tous des bénévoles et, si je peux me permettre, le "votre prompt réaction" ne pousse pas forcément à répondre "promptement" à la demande.
Pour ton pb, je te propose ceci :
Option Explicit
Sub lance_test()
Dim multiplicande As Long ' multiplicande'
Dim len_nb_1 As Integer
Dim multiplicateur As Long ' multiplicateur'
Dim len_nb_2 As Integer
Dim Var As Integer
Dim tablo() As Integer
Dim i As Integer, j As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
Dim x As Integer, y As Integer, z As Integer
Dim resultat As String
Dim mav_01 As Integer, reste As Integer
multiplicande = 111111111
multiplicateur = 111111111
len_nb_1 = Len(CStr(multiplicande))
len_nb_2 = Len(CStr(multiplicateur))
ReDim tablo(len_nb_1 + len_nb_2 + 1, len_nb_1 + len_nb_2 + 1)
For i = 1 To len_nb_2
Var = 0
a = 0
e = len_nb_1 - i + 1
For j = 1 To len_nb_1 + 1
If j < len_nb_1 + 1 Then
c = c + 1
b = len_nb_1 - a
a = a + 1
tablo(j - 1 + d, i - 1) = Right(Right((Mid(multiplicande, b, 1) * Mid(multiplicateur, e, 1)), 1) + Var, 1)
If Len((Mid(multiplicande, b, 1) * Mid(multiplicateur, e, 1)) + Var) > 1 Then
Var = Left(((Mid(multiplicande, b, 1) * Mid(multiplicateur, e, 1)) + Var), 1)
Else
Var = 0
End If
End If
If j < len_nb_1 And Var > 0 Then
' pour test'
Cells(21 + i, 30 + len_nb_1 - j - d) = tablo(j - 1 + d, i - 1)
Else
' pour test'
Cells(21 + i, 30 + len_nb_1 - j - d) = tablo(j - 1 + d, i - 1)
tablo(j + d, i - 1) = Var
' pour test'
Cells(21 + i, 30 + len_nb_1 - j - 1 - d) = Var
If j = len_nb_1 Then Exit For
End If
Next j
d = d + 1
Next i
For z = 0 To len_nb_1 + len_nb_2 + 1
For x = 0 To len_nb_2 - 1
mav_01 = mav_01 + tablo(z, x)
Next x
mav_01 = mav_01 + reste
reste = 0
If Len(CStr(mav_01)) = 2 Then
resultat = Right(mav_01, 1) & resultat
reste = Left(mav_01, 1)
Else
resultat = mav_01 & resultat
End If
mav_01 = 0
Next z
For y = 1 To Len(resultat)
If Left(resultat, 1) = 0 Then resultat = Mid(resultat, 2) Else Exit For
Next y
' pour test'
MsgBox resultat
' pour test il faut que la cellule soit de format texte'
Range("A1") = CStr(resultat)
End Sub
C'est un peu capilotracté, mais cela fonctionne. Macro QUE pour les entiers Il y a certainement plus simple, mais c'est plus cher
A te lire Eric
PS : fichier texte du code joint, il y a, à la prévisu, des caractères qui disparaissent
|