Un seul formulaire à la fois !

Comment faire en sorte que seulement un seul formulaire soit ouvert à la fois dans Access ? Ce qui équivaut à fermer tous les formulaires automatiquement, avant d’en ouvrir un nouveau !

Recopiez le code suivant dans un module standard Access :

Ensuite, pour appeler la fonction en VBA, il vous suffit d’écrire :

ou encore, si la fonction doit être appelée depuis une barre de menus ou d’outils :

Vous aimerez aussi...

9 réponses

  1. bobe48000 dit :

    Merciiiiiiiiiiiii
    j’ai compris maintenant
    bon nuit

  2. bobe48000 dit :

    bonjour hervee
    merci pour l’explication de count-1………..mais je pense qui tu doit ecrire le boucle :
    DoCmd.Close acForm, Forms(intI).name
    pas comme
    DoCmd.Close acForm, Forms(0).name
    sinon le boucle ne marche pas !!!!!!!!!!!!!!!!!!!!!
    ??????????????????????????????????????????????????

    • Hervé Inisan dit :

      Non pas vraiment : l’idée ici est de toujours fermer le 1er formulaire ouvert (le numéro 0). Comme on ferme un formulaire à chaque tour de boucle, la liste des formulaires diminue en même temps.

      Pour faire un parallèle : c’est comme si on avait une pile d’assiettes et qu’on enlève toujours celle du dessous jusqu’à ce qu’il n’y en ait plus.

  3. BOBE48000 dit :

    bonjour
    je veut un peut d’explication car je pense que il faut ecrire sinon pourquoi en declare inti

    DoCmd.Close acForm, Forms(intI).name

    et encore pourquoi count-1
    et merci

    • Hervé Inisan dit :

      intI est un nombre entier. Tu peux déclarer la variable par :

      … mais une des conventions dans le monde VBA consiste à préfixer une variable de son type abrégé. D’où le intI. Une chaîne s’écrirait strMessage, par exemple.

      Ensuite, le nombre de formulaires ouverts est donné par Forms.Count. Mais la numérotation des formulaires démarre à 0, donc le dernier formulaire est du coup numéroté n-1, donc ici Forms.Count - 1.

      Ouala !

  4. Hervé Inisan dit :

    Soso > Pour faire un total de synthèse (type Somme, Moyenne…), tu peux transformer ta requête en requête de regroupement (tu as une icône Totaux qui fait ça). Ça te rajoute une ligne dans la grille de requête, avec laquelle tu peux appliquer un total sur le champ souhaité.

  5. Soso dit :

    Bonsoir,

    Merci pour ta réponse mais je veux vraiment que tu m’aides pour ce problème.
    J’ai déjà effectué les requêtes de tri entre les villes par contre je n’arrive pas à afficher la somme des absences de chaque équipe ( par exemple Paris contient 3 équipes et Lyon 4 équipes etc)
    Merci d’avance 🙂

  6. Hervé Inisan dit :

    Soso > La question n’est pas vraiment liée à cet article, mais ce qu’il te faut, c’est une requête pour extraire les données qui t’intéressent (avec un critère sur les absences, par exemple). Une fois que ta requête sort les bonnes infos, tu peux t’en servir comme source de formulaire (ou d’état, si c’est pour imprimer).

  7. Soso dit :

    Bonjour,

    Tout d’abord, je vous remercie pour votre site qui est très instructif. Par contre, j’ai le problème suivant : J’ai un tableau qui regroupe plusieurs joueurs de différentes équipes et différentes villes (Paris, Dijon…). Donc le tableau contient plusieurs champs tels que Nom, Prénom, Age du joueur, Equipe, Ville, Année, Nombre de jours à jouer, Nombre d’absences … Alors, mon souci survient lorsque je dois retirer de l’information à partir de ce tableau et de faire un autre tableau qui sera affiché dans un formulaire ou un état. Il regroupera par exemple les joueurs qui s’absentent beaucoup et ces données seront triées par ville, par équipe et de faire le calcul du total des jours d’absences par chaque ville. Un grand Merci d’avance 

Laisser un commentaire

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