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 :
1 2 3 4 5 6 7 8 9 10 |
Function OuvrirUnSeulFormulaire(ByVal strForm As String) ' Commencer par fermer tous les formulaires potentiellement ouverts Dim intI As Integer For intI = 0 To Forms.Count - 1 DoCmd.Close acForm, Forms(0).name Next ' Ouvrir le formulaire souhaité en mode Normal DoCmd.OpenForm strForm, acNormal End Function |
Ensuite, pour appeler la fonction en VBA, il vous suffit d’écrire :
1 |
OuvrirUnSeulFormulaire "Nom d'un formulaire" |
ou encore, si la fonction doit être appelée depuis une barre de menus ou d’outils :
1 |
=OuvrirUnSeulFormulaire("Nom d'un formulaire") |
Merciiiiiiiiiiiii
j’ai compris maintenant
bon nuit
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 !!!!!!!!!!!!!!!!!!!!!
??????????????????????????????????????????????????
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.
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
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 iciForms.Count - 1
.Ouala !
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é.
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 🙂
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).
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