Bonjour à tous,
Dans une fonction de mon projet, j'ouvre un fichier Excel et fait des traitements pour importer les données dans ma base.
Un de ces traitements est de regarder une valeur dans une cellule d'une colonne d'excel (qui contient le nom d'une entreprise) et de regarder si elle existe déjà dans une table de ma base (celle qui contient les noms des entreprises).
Si elle n'existe pas, mon objectif est de proposer à l'utilisateur d'utiliser un formulaire (déjà fait) pour créer une nouvelle entreprise. J'utilise un formulaire car en plus du nom, l'utilisateur doit donner d'autres infos (et je dois faire 2-3 trucs via du code au moment de la création).
j'ai envisagé plusieurs solutions :
- le plus simple serait de quitter la fonction qui fait les traitements, ouvrir le formulaire, et quand l'utilisateur a fini de créer l'entreprise, relancer la fonction (par un code lié au bouton de confirmation de création). Mais je préfèrerais éviter de quitter la fonction car la fonction d'importation est assez longue (l'utilisateur doit faire pas mal d'actions avant d'arriver à cette étape).
- une autre serait de séparer la fonction qui fait tous les traitements en plusieurs fonctions qui s’exécutent successivement, mais ca m’embête aussi car les traitements sont dépendants entre eux (et sont contenus dans des boucles for et while...)
- la meilleure solution (mais que je ne sais pas faire) serait de mettre en pause le code dans ma fonction, de permettre à l'utilisateur d'utiliser mon formulaire de création, et une fois qu'il a fini, de recommencer l’exécution du code précisément à l'endroit ou je l'ai arrêté. Pour mettre en pause, j'ai vu plusieurs solutions :
- sleep : ca convient pas, l'utilisateur peut mettre plus ou moins de temps pour créer l'entreprise
- solution bourrin : un booléen que l'on met à faux initialement + une boucle while qui teste si ce booleen est vrai (on met cette boucle à l'endroit ou le code doit être en pause). On ouvre le formulaire de création, et quand l'utilisateur a fini on passe le booléen à vrai. Mais je pense que ca va faire monter le cpu à 100% et faire laguer le pc, et c'est pas très joli.
- la commande doevents ? j'ai pas bien compris ce qu'elle faisait dans l'aide MS et dans mes recherches. Il est écrit qu'elle rend la main à l'OS.
Dans ce contexte, je voudrais savoir si il existe une fonction ou une technique qui permette de mettre en pause le code et de laisser l'utilisateur manipuler un formulaire, et de reprendre ensuite.
Merci d'avance
edit :j'avais oublié de préciser que je suis sous access 2007
Partager