Ouvrir plusieurs fois le même formulaire – Episode 3

Dans l’épisode précédent, nous avons vu comment ouvrir plusieurs fois le même formulaire. Il nous reste un petit souci à régler : les différents formulaires s’ouvrent exactement les uns par-dessus les autres, ce qui n’est pas très pratique !

Nous allons améliorer un petit peu le code afficher les formulaires en cascade, pour que l’utilisateur voie plus clairement qu’il y a plusieurs formulaires en jeu.

Affichage en cascade des instances de formulaire

Le code VBA

  1. Ajoutez tout d’abord cette constante en début du module mod Forms (le module que vous avez créé dans l’article précédent). Cette constante donne le décalage en twips d’un formulaire par rapport à un autre. Modifiez la valeur si vous la trouvez trop petite.

  1. Remplacez ensuite tout le bloc Function NouveauFormulairePersonne() / End Function par celui-ci :

Quelques explications

  • La nouveauté se situe sous le commentaire « Position du formulaire courant » (le reste n’a pas changé).
  • L’idée de ce nouveau bloc est de récupérer le formulaire actif à l’écran (Screen.ActiveForm), s’il y en a un. Si c’est le cas, le nouveau formulaire sera décalé de FORM_OFFSET par rapport au formulaire actif.

Vous aimerez aussi...

4 réponses

  1. Nanille dit :

    Finalement je ne me suis pas embêtée avec un sous-formulaire, j’ai fait une zone de liste 🙂
    Merci pour l’aide.

  2. Nanille dit :

    Je ne suis pas très à l’aise avec les sous-formulaire mais je vais m’y mettre dans ce cas et tester comme ça. Je te tiens au courant.
    Merci.

  3. Hervé Inisan dit :

    Nanille > C’est a priori possible (il faudrait bien sûr aménager le code). Mais je ne suis pas sûr que ce soit la bonne méthode, dans le cas présent. S’il y a des relations de 1 à plusieurs entre Espèces et Échantillons, j’imagine qu’il doit y avoir 2 tables. Et dans la logique d’Access, l’affichage de ces données serait plus naturel avec un formulaire des espèces, et un sous-formulaire des échantillons. Le filtre sera géré automatiquement (la correspondance entre espèce et échantillons).

  4. Nanille dit :

    Bonjour,
    Toujours de très bon tutoriels.
    J’ai reproduit celui-ci et il fonctionne très bien.
    Cependant, j’aurais aimé l’adapter encore plus à ma base et je ne sais pas comment y arriver.
    Petit rappel de ce que je crée :
    Ma base de donnée servira pour une collection d’échantillons d’espèces. Je peux avoir plusieurs échantillons de la même espèce mais avec une clé différente pour les retrouver.
    Exemple : une espèce sera codée sous forme XXXXXX0007 et les différents échantillons qui lui correspondent XXXXXX0007a; XXXXXX0007b …
    J’ai créé un formulaire de recherche qui me permet de retrouver une espèce dans la base de donnée.
    Le résultat est obtenu dans une zone de liste. J’ai fait en sorte qu’en double cliquant dessus, on ouvre un formulaire qui affiche le détail des infos de l’espèce mais aussi qu’en déverrouillant le formulaire on puisse mettre à jour les différents champs.
    Tout cela fonctionne à peu près bien.
    Du coup au double clic j’ai en plus mis en œuvre ton tutoriel, il m’ouvre bien 2 fois le formulaire, mais il m’ouvre 2 fois le même et j’aimerais qu’il m’ouvre les différents échantillons possibles, s’il n’y en a qu’un, que le formulaire ne s’ouvre qu’en un seul exemplaire, s’il y en a 2 en 2 exemplaires, 3 , 3 exemplaires…

    Crois-tu cela possible ? Et peux-tu m’aider à y arriver ?

    Merci encore pour tous tes articles !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *