Macro de débutant à corriger...

  • Initiateur de la discussion Initiateur de la discussion Shinichi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Shinichi

Guest
Bonjour à tous

J'ai 15 TextBoxes à sommer dans une 16eme...
Mais ce que je fais ne marche pas.. pourquoi? Les textboxes a sommer sont les textbox de 261 à 276

TextBox151 = 0
For I = 61 To 76
TextBox151 = Val(TextBox151) + Val(textbox2 & I)
Next I
End Sub
 
bonjour,

Dans ton code, tu ne peux pas faire d'opération directement sur le nom des objets (il cherche une textbox2, ton code je pense, là)

je suis d'accord qu'une boucle serait plus jolie, mais dans ton cas, je passerais quand meme par un bien laid :

textbox151.value = textbox161.value + textbox162.value + textbox163.value....+ textbox176.value


On peut aussi boucler sur les objets du formulaire, mais bon.. pour 15 boiboites, c'est peut etre un peu excessif 😉


++
 
Bonjour à tous et merci pour l'aide

J'ai un peu modifié ton code, car cela posait problème si les textboxes n'étaient pas remplies... Mais cette porte de sortie ne marche qu'une fois.. Pourquoi? Comment améliorer le truc?


Dim somme As Double
Dim i As Integer
TextBox151 = ''
For i = 261 To 276
On Error GoTo out
somme = somme + Controls('TextBox' & i)
out:
Next i
TextBox151 = somme

A bientot
 
Bonjour tout le monde

Dans ton code tu lui dis : si tu rencontres une erreur rend toi à la balise out: mais après la macro se termine sans etre retourné dans la boucle for next.

A la limite tu pourrais utilisé on error resume next à la place de on error goto.

Mais je pense que ce type de macro à grand renfort de gestionnaire d'erreur est dangereux, en effet si tu à un autre problème plus loin dans ta procédure celui-ci ne sera pas non plus détecté car annulé par le on error.

Je crois qu'il vaut mieux blindé le code de la boucle en testant les valeurs des textbox avant de sommer leur contenus :

Ce code, vérifie avant que le textbox n'est pas vide, qu'il contient bien du numérique, et remplace le séparateur de décimal . par ,

Dim i As Integer
Dim somme As Double
For i = 261 To 276
    Controls('TextBox' & i) = Replace(Controls('TextBox' & i), '.', ',')
   
If Controls('TextBox' & i) <> '' And IsNumeric(Controls('TextBox' & i)) Then
&nbsp; &nbsp; &nbsp; &nbsp; somme = Controls('TextBox' & i) + somme
&nbsp; &nbsp;
End If
Next i

TextBox151 = somme

End Sub


En espérant que ceci te dépannera.

Salut
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
276
Réponses
15
Affichages
765
Réponses
10
Affichages
658
Réponses
5
Affichages
900
Réponses
8
Affichages
774
Réponses
4
Affichages
721
Retour