Simplifier un code pour somme textbox

Bonjour,

Je dois répéter plusieurs fois le code suivant:

For I = 1 To 12
somme = somme + Val(Controls("TextBox" & I + 21 ).Value)
Controls("TextBox 502").Value = somme
Controls("TextBox 502") = Format(Controls("TextBox 502"), "### ### ##0")
Next I

For I = 1 To 12
somme = somme + Val(Controls("TextBox" & I + 33 ).Value)
Controls("TextBox 503").Value = somme
Controls("TextBox 503") = Format(Controls("TextBox 503"), "### ### ##0")
Next I

Je pensai pouvoir le simplifier comme ceci

Private Sub CALCULTOTALMENSUEL()

Dim X As Integer
Dim somme(X) As Long
Dim ECART As Integer

ECART = 12
somme(X) = 0

For X = 0 To 4
For I = 1 To 12
somme(X) = somme(X) + Val(Controls("TextBox" & I + 21 + X * ECART).Value)
Controls("TextBox" & X + 502).Value = somme(X)
Controls("TextBox" & X + 502) = Format(Controls("TextBox" & X + 502), "### ### ##0")
Next I
Next X

End Sub

Mais cela ne marche pas.

Cela vient du fait, je crois, de mettre une variable dans une autre > somme(X) et je dois mal la définir.

Quelqu'un aurait une solution ?

Merci


Le code de départ était:

For I = 1 To 12
somme1 = somme1 + Val(Controls("TextBox" & I + 21 ).Value)
Controls("TextBox 502").Value = somme1
Controls("TextBox 502") = Format(Controls("TextBox 502"), "### ### ##0")
Next I

For I = 1 To 12
somme2 = somme2 + Val(Controls("TextBox" & I + 33 ).Value)
Controls("TextBox 503").Value = somme2
Controls("TextBox 503") = Format(Controls("TextBox 503"), "### ### ##0")
Next I

Ca ne change pas mon problème, mais je tenais à corriger (les sommes sont numérotés).

bonjour,

une proposition de correction à tester,

sinon merci de mettre ton fichier, de préciser quelle est l'erreur et quelle est la séquence des actions à faire pour la reproduire.

Private Sub CALCULTOTALMENSUEL()

Dim X As Integer
Dim somme As Long
Dim ECART As Integer

ECART = 12

For X = 0 To 4
somme = 0
For I = 1 To 12
somme = somme + Val(Controls("TextBox" & I + 21 + X * ECART).Value)
Next I
Controls("TextBox" & X + 502).Value = somme
Controls("TextBox" & X + 502) = Format(Controls("TextBox" & X + 502), "### ### ##0")
Next X

End Sub

Bonjour,

En fait je suis sur un multipage.

Je souhaite additionner les valeurs mensuelles d'une année et mettre le résultat dans la textbox total. (en pièce jointe une photo ecran de l'usf) qui peut permettre de mieux comprendre.

Je ne souhaite pas écrire à chaque fois somme1=....., somme2=..... dans le code.

La formule écrite nous donne la somme cumulée, c'est à dire:

somme1= somme1 (résultat correct)

somme2= somme1 + somme 2

somme3 =somme2 + somme3

J'ai corrigé partiellement.

Je remplace

somme = somme + Val(Controls("TextBox" & I + 21 + X * ECART).Value)

par

somme = somme + Val(Controls("TextBox" & I + 21 + X * ECART).Value) - Val(Controls("TextBox" & I + 21 + (X - 1) * ECART).Value)

Je me rapproche là du résultat escompté.

L'année N est inscrite des Textbox1 à Textbox11 (ici 2014)

L'année N-1 est inscrite des Textbox 12 à 21 (ici 2013)

En insérant (X-1) dans la formule corrigée, lorsque X=0, on soustrait donc aussi la somme des textbox de textbox 9 à textbox 21= 10*2013 + 2*2014 = 24 158, ce qui correspond à l'écart entre ma textbox total et le cumulé de l'année (partie droite de l'image: 61 682 862 - 61 658 704 = 24 158)

Comment corriger cela?

code cor1

Bonsoir le fil, bonsoir le forum,

Peut-être comme ça :

Private Sub CALCULTOTALMENSUEL()
Dim ECART As Byte
Dim X As Byte
Dim I As Byte
Dim somme() As Long

ECART = 12
For X = 0 To 4
    ReDim Preserve somme(X)
    somme(X) = 0
    For I = 1 To 12
        somme(X) = somme(X) + Val(Controls("TextBox" & I + 21 + X * ECART).Value)
    Next I
    Controls("TextBox" & X + 502).Value = somme(X)
    Controls("TextBox" & X + 502) = Format(Controls("TextBox" & X + 502), "### ### ##0")
Next X
End Sub

J'aurais plutôt utilisé un module de classe mais sans fichier, difficile de t'aider davantage...

Bonjour,

Ca fonctionne bien.

Va falloir étudier cela.

Merci beaucoup.

Rechercher des sujets similaires à "simplifier code somme textbox"