Salut Patrice,
En fait, tu as raison. Le formulaire peut se décharger lui-même. J'en étais resté à la considération théorique que ce n'était pas possible, mais ça l'est. Mea culpa
D'ailleurs, l'erreur 424 précise bien "objet requis"... Cela voudrait dire que UserForm1 a été probablement été renommé et qu'il faut donc modifier la ligne.
Quoi qu'il en soit, le déchargement/rechargement du formulaire, qu'ils soient effectués dans le code du formulaire ou en dehors, me semble plus rationnel que les lignes de vidange de chaque contrôle, surtout que, comme je l'ai dit, il n'est pas dit que les textbox étaient vides au premier chargement (valeur par défaut entre Load et Show, ou sur lInitalize). Vider les contrôles n'amène pas à passer par Initialize, alors que le déchargement/rechargement oblige à passer par Initialize si présent.
Cela étant, ça ne change rien à l'architecture à mettre en place, selon moi. Si le formulaire se décharge (ou est déchargé), on ne sait plus en exploiter les données, par définition. Ce qui implique que tout le traitement doit être fait à l'intérieur du formulaire, avant le déchargement pour en exploiter les données, et dans le Initialize du formulaire pour définir certaines valeurs par défaut lors du chargement, puisque ces traitements ne peuvent plus être effectués par la procédure appelante. Tout mettre dans le formulaire, en ce compris donc son initialisation et le traitement des données après saisie, de surcroît avec le code de traitement dans le bouton CommandButton1 pour ce qui est de l'exemple, amène à un couplage fort entre le formulaire et les données, réservant le formulaire à un usage particulier, alors qu'une bonne architecture demande que les couches de présentation et de gestion des données soient séparées (architecture "trois tiers"). Respecter cette architecture amène selon moi plus de souplesse dans l'utilisation du formulaire( modification des valeurs au chargement par exemple, et traitement des données après saisie et masquage du formulaire (Me.Hide).
Partant de là et étant farouche partisan d'une systématisation de la façon de programmer, j'ai étendu cette manière à tout formulaire, quel que soit son utilisation finale. C'est pour cela que le code que j'ai proposé illustre une façon de travailler avec les tables de données et les formulaires, permettant de détacher le formulaire de la structure de la feuille de calcul et permettant également de gérer d'autres feuilles de calcul (de structure similaire) au travers d'un seul et même formulaire![]()
Partager