[VB] éviter la répétition avec des noms d'objets similaires

éviter la répétition avec des noms d'objets similaires [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 26-08-2010 à 22:27:10    

Bonjour à tous,
 
c'est mon premier message ici :jap: il se trouve que je débute en Visual basic et pour mon premier projet, je cherche à créer une fonction pour multiplier le nombre inscrit dans un NumericUpDown, par celui dans un TextBox (ce qui ne pose pas de problème de compatibilité). J'utilise ensuite la fonction à chaque changement de la valeur de NumericUpDown pour la faire apparaître dans un NumericUpDown "somme". Le problème, c'est que j'ai pas une multiplication mais 17, donc 17 NumericUpDown et 17 TextBox, avec en prime 17 CheckBox qui conditionnent le calcul !
 
Leur seule différence est le chiffre au milieu : les entrées dont j'ai besoin sont TextBox1.Text à TextBox17.Text, NumericUpDown1.Value à NumericUpDown17.Value, et CheckBox1.Checked à CheckBox17.Checked
 
Pour info, ce premier projet est une grille de notes du bac toute bête, avec notes (NUD), coeffs (TB) et matière bonus ou obligatoire (CB)...
 
Je ne sais pas ce que je dois faire, seulement ce que je ne veux PAS faire, comme écrire 17 fois que, à chaque changement de la valeur de NUDx, il faut utiliser la fonction de calcul... peut-on ouvrir un private sub pour plusieurs évènements possibles ?, ou écrire une fonction dans laquelle j'ai à additionner les 17 produits (avec la condition If-Then-Elseif : 4 lignes)...
 
Comment je pourrais gagner du temps, ce qui est je crois le propre du programmeur ? :-)
 
Je vous remercie :)

Reply

Marsh Posté le 26-08-2010 à 22:27:10   

Reply

Marsh Posté le 27-08-2010 à 10:01:24    

Salut,
 
Chaque controle gère ses propres évènements. Je ne connais pas d'évènement commun à plusieurs contrôles.
 
Par contre, une fonction peut être appelée par plusieurs contrôles.
 
Donc, écris le code commun dans une fonction, et dans chaque évènement "change" de tes TextBox, appelle cette fonction (1 ligne de code) en passant éventuellement des paramètres tels que la valeur du TextBox, ou son nom.
 

Reply

Marsh Posté le 27-08-2010 à 12:14:50    

Je te remercie de ta réponse, je n'avais pas pensé aux arguments de fonction. Mais je suis déçu de savoir que VB ne prévoit rien pour éviter d'écrire 17 fois un même appel à une fonction ! Faudrait-il que je me tourne vers d'autres langages ? Passer à des langages de programmation séquentielle plutôt qu'évènementielle par exemple ?

Reply

Marsh Posté le 27-08-2010 à 13:35:56    

Une autre possibilité, si j'ai bien compris ton problème, c'est d'ajouter un bouton qui refait tous les calculs, si tu changes une valeur de TextBox.
 
On refait tous les calculs, c'est du temps machine, mais ça dure un battement de cil (c'est peanuts).  :jap:  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed