Bonjour,
J'ai une petite problème que je n'arrive à résoudre mais je vais d'abord présenter le projet :
J'ai deux fichiers Excel :
- "Bdd.xls" contenant les données dans une feuille. La première ligne contient les champs des données. Chaque ligne suivante est une fiche avec les données.
- "Formulaire.xls" contenant un Userform, le programme VBA et une feuille "parametres" qui contient aussi des champs (les mêmes que la Bdd normalement) mais avec des informations de paramétrage comme par exemple
* le contenu des listes déroulantes, (de la ligne 6 à 24)
* le texte à afficher dans une bulle d'aide qui explique comment remplir le champs, (ligne 26)
* la formule de calcul (ligne 25)
L'Userform contient des Textbox et des Listbox lié à la Bdd via le ControlSource. Les Listbox sont alimentées via un code VBA qui reprend le contenu des listes dans la feuille Parametres.
En fait, les Textbox et Listbox ont le même nom que les champs.
Parmi les Textbox, certaines sont des chiffres à saisir. Par exemple : Chiffre1 et Chiffre2
Parmi les Textbox, j'ai aussi certaines dans lesquelles je souhaite afficher le total d'autres Textbox via la formule indiquée dans la feuille Parametres du champs correspondant. Par exemple la Textbox "Total" serait égale à Chiffre1 + Chiffre2.
Pour cela :
- via un code VBA, j'ai donné un nom à chaque colonne de la BDD (le nom de la colonne = le nom du champs)
- j'ai créé dans la Bdd les champs de totaux et via un code VBA les colonnes de ces champs se remplissent avec les formules indiquées dans la feuille Parametre. En effet, à la base le Bdd ne contient pas les formules. Les formules reprennent les nom de colonne pour pouvoir additionner. Jusque là çà va, les totaux se font correctement.
Le hic est lorsque j'ai lié les Textbox de totaux à ces champs totaux de la bdd via le ControlSource des Textbox. En effet, ce lien efface les formules des cellules liées par le résultat en dur. Donc forcément lorsque je change un chiffre, le total ne se met pas à jour puisqu'il n'y a plus de formule dans la cellule liée au Textbox. Une chose que j'ai compris puisqu'il y a interactivité dans les deux sens entre une Textbox et sa cellule.
Mais donc comment faire pour que mes Textbox de totaux fassent bien les totaux selon les formules indiquées dans la feuille Paramètres ? Je pourrais mettre en dure dans le code VBA chaque formule (du genre TextboxTotaux.value = TextboxChiffre1 + TextboxChiffre2) mais je veux éviter cela pour pouvoir ajouter des champs facilement via la feuille Parametres et donc sans retourner dans le VBA à chaque fois. De plus, mettre les formules en dures dans VBA c'est faire autant de ligne de code qu'il y a de textbox servant à un résultat d'un total.
J'avais essayé aussi de mettre TextboxChiffre1 + TextboxChiffre2 dans les options de la TextboxTotaux mais çà ne fonctionne pas.
Je ne sais plus comment faire, je bloque. Auriez vous une piste s'il vous plait ?
Bien à vous.
Partager