Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 14h40   #1
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Par défaut Etat, Calcul

Bonjour à tous,

J'aimerais créer dans une table (ou une requête), un champ qui serait la somme du nombre d'enregistrements selon une condition précise, d'après 2 champs (= le nombre de présents dans la formation xxx). Seulement je ne sais pas comment m'y prendre. Comment je fais pour créer un champ dans une table avec une formule pour calculer le nombre d'entrées selon des critères dans une autre table?
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 14h56   #2
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,

Utiliser
Code :
=VraiFaux(TestLogique;ValeurSiVrai;ValeurSiFaux)
On peut utiliser cela dans un champ calculé d'une requête, d'un formulaire ou d'un état
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 15h11   #3
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Merci pour ta réponse. Je me rends compte avoir posé cette question ya 6 mois et j'avais complètement zappé et j'en suis navré.

Mais là dessus j'ai une question bien précise et pratique

Ce calcul, je ne peux le mettre dans l'état, vu qu'il n'y a qu'une seule ligne pour tous les enregistrements. Et je ne sais pas dans quoi ce serait plus logique de mettre ce champ (car c'est un champ vu que ca va s'afficher dans un état

Est-il + logique de la mettre dans une table (Table formation où chaque formation a son enregistrement), dans une requête (mais pour faire un champ dans une requête il faut déjà qu'elle existe comme champ d'une table, ou bien comme champ d'un formulaire? Je ne sais pas vraiment où placer le champ de calcul qui va me sortir le résultat qui sera affiché pour chaque formation. Pour chaque formation je dois avoir des nombres selon les inscriptions, le type de public, ... etc et ces informations se trouvent dans les champs (inscriptions = total par formation, présent = total/f avec statut présent, nombre de 0-3 (cette info est dans une case à cocher dans les inscriptions), etc..

Grâce à toi je sais comment avancer mais je ne sais pas comment avancer (sur quelle route)
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 15h49   #4
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour Zoliver,


Ta question ne me semble pas très claire,

Tu peux bien sur rajouter le champ calculé dans ta requête, en utilisant la fomule que t'a communiquée Rjamin.
La question que je me pose : est-ce que le résultat de ta requête découle d'une fonction de regroupement ? est-ce que tu souhaites mettre au même niveau le détail de de tes enregistrment et des infos de calcul sur l'ensemble de ta population ?
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/12/2010, 14h38   #5
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Je suis conscient que ce n'est pas évident alors je vais essayer d'expliquer, par rapport à ce que j'avais mis en place dans Excel

Dans excel j'avais, entre autre, un onglet avec la liste des formations, et un onglet avec la liste des inscriptions

Je vous mets ici une capture d'écran sur une formation bien précise.
Ce dont je suis en train de rechercher comment, et ce qui me fait arracher les cheveux, c'est les valeurs qui se trouvent dans les colonnes allant de 0-3 à Annul

Ces valeurs diffèrent selon la formation, car dans excel j'ai une formule qui m'affiche le nombre d'inscriptions selon le type de public (0-3 à ATL) et selon le statut de leur inscription (Inscrit, Présent, en liste d'attente, annulé)

Chaque formation a donc des valeurs différentes, donc je ne vois pas comment faire pour, dans un état, avoir une information différente pour chaque entrée dans la table de formation, ou alors je dois créer dans la table un champ qui calcule ces données

Si vous avez besoin des formules excel utilisées, je vous les donne volontiers mais je ne pense pas que le problème se situe là.
Moi ce donc j'ai du mal c'est comment faire en sorte que dans un état je puisse intégrer ces infos, étant donné que dans mon état je n'ai qu'un seul champ par formation selon le type de données que je veux faire et je ne sais vraiment pas comment m'y prendre, où je dois mettre cela, dois-je créer un champ dans une table, etc, je ne sais vraiment pas comment m'y prendre. Avec Excel c'était tellement facile vu que je roule là dessus mais Access c'est nouveau pour moi

Je vous mets 2 autres images en attach, de l'état en mode création, et de l'état final, pour que vous voyez où je veux en venir
Images attachées
Type de fichier : jpg Temp-F.jpg (29,7 Ko, 5 affichages)
Type de fichier : jpg Temp-Fb.jpg (10,5 Ko, 6 affichages)
Type de fichier : jpg Temp-E.jpg (16,0 Ko, 5 affichages)
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2010, 23h42   #6
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Quelle est la structure de la (ou des) table(?)

Je veux bien regarder d'un peu plus près, mais il me faut un peu plus d'infos.

A priori, il faut au moins 2 tables :
- 1 pour le descriptif des formations
- 1 pour les inscriptions
- éventuellement 1 pour les lieux de formations.

A partir de ces données, je serai plus à même de vous conseiller
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 15h45   #7
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Bonjour, désolé pour le retard, j'ai fait des recherches avant


Voila j'ai fait pas mal de recherches mais en fait cela ne correspond pas à ce que je cherche mais pourtant c'est simple
Voila dans ma DB j'ai plein de tables-requêtes-... etc mais en fait concernant le problème qui m'occupe cela correspond à 2 tables, la table T_FE_Formation1011 et la table T_FE_Inscription1011

La première contient les infos sur les formations, la 2ème contient les infos sur les inscriptions pour ces formations

Je te mets plusieurs captures d'écran comme ca tu vois


J'ai donc une table Inscription, une table Formation
Une formation peut biensûr accueillir plusieurs inscriptions, et chaque inscription se fait pour une seule formation à la fois.

J'ai créé un état avec la liste des formations, avec les infos qui sont présents dans la table
Mais voilà il manque les infos essentielles, à savoir le nombre d'inscrits (=nombre d'entrées de la table Inscriptions par rapport à chaque formation), nombre de présents/en liste d'attente/annulé (=nombre pour chaque formation selon le statut d'inscription), et le nombre pour chaque type de public (0-3, 3-12, ATL, ce sont des cases à cocher, j'aurais pu faire via une liste déroulante mais j'ai maintenu l'ancien système)

Il faut savoir qu'avant, j'avais ces infos sur Excel, et qu'on a décidé de passer sur Access. Sur Excel j'avais un onglet pour les formations, un pour les Inscriptions, un pour les Données Perso, etc

Je ne sais pas si ca peut vous aider mais j'ai les formules pour excel...
Pour les inscrits j'avais =NB.SI('Ins 10-11'!$H$2:$H$1759;'For 10-11'!$A2)
A2 étant le numéro de la formation
Pour les présents: =SOMMEPROD(('Ins 10-11'!$H$2:$H$1759='For 10-11'!$A2)*('Ins 10-11'!$G$2:$G$1759=$I$1))*1
I1 étant le statut d'inscription repris dans le titre de la colonne
Et pour le 0-3 3-12-ATL c'était 3 colonnes donc c'était assez simple...
=SOMMEPROD(('Ins 10-11'!$H$2:$H$1759='For 10-11'!$A2)*('Ins 10-11'!$D$2:$D$1759="X")*1)


Pour Access je tâtonne à chaque fois. Dès que j'ai trouvé comment faire un truc, je crie "Eurékà", mais là je sèche, étant donné que dans un état en mode création je sais pas comment m'y prendre pour afficher les infos que je veux afficher

Pour l'instant quand je veux savoir le nombre d'inscrits/présents/... par formation, j'utilise un état que j'ai créé (je ne sais même plus comment j'y fait pour y arriver), mais évidemment ya pas la formule que je veux, vu qu'il ne compte que les enregistrements dans CET état, formule que je ne peux transposer ailleurs. Je vous mets aussi une capture d'écran de cet état

Je ne sais pas vraiment ce que vous avez besoin d'autre comme info, mais je serais ravi de vous les donner. Avant de poster ce message j'ai fait des recherches, mais ca n'a pas abouti, et je ne sais pas du tout comment m'y prendre, si je peux faire ce calcul directement via un état, ou si je dois créer une requête avec le champ de calcul, ou... et je ne sais même pas le code pour calculer conditionnellement par rapport à 2 champs...

Et comme je suis pressé par le temps, et qu'après les progrès que j'ai fait ce serait bête que je sois le seul à "décrypter" la base de données, alors qu'elle est censée servir à toute l'équipe

La capture 6: http://img43.imageshack.us/img43/3419/cap06p.jpg
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 11h40   #8
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour ZoliveR, J'espère que tu as passé de bonne fêtes.

J'ai lu attentivement ton post.
Ta démarche me parait bonne, mais il faut que tu essaye de t'affranchir de la logique d'Excel.
C'est le piège acec Access2007 (et 2010), qui te permet des manipulations complexes au sein de tables. D'un côté, ça permet aux utilisateurs non familiarisés aux bases de données de faire des manipulations puissantes, mais d'un autre côté, ça masque la logique de fonctionnement propre à ce type d'application.

Je te propose de revenir aux fondamentaux, si tu le veux bien. Ne te formalise pas si tu as l'impression que je répète ce que tu sais depuis toujours. Mais si tu as bien intégré le principe, alors tout sera plus facile ultérieurement.

1) les tables
Elles doivent posséder un caractère d'unicité dans les informations qu'elles contiennent. Les seules informations communes doivent uniquement servir à mettre ces tables en relations. Ces informations doivent être facile à manipuler et peuvent éventuellement être manipulées sans intervention manuelle. Elles sont souvent numériques (identifiant unique) car dépourvues d'aucune signification métier car uniquement techniques.

2) les requêtes
Ces sont elles qui sont à la base de toutes les manipulations de données. Elle permettent, non seulement de faire des sélection, mais aussi de créer des données calculées et de faire de calculs sur les agrégation (sommes, dénombrement ...)

Conclusion
Tes tables doivent être aussi simple que possible, et accessibles facilement avec des identifiants.
Une fois que celles-ci seront bien définies, on pourra s'attaquer aux requêtes.

Citation:
J'ai créé un état avec la liste des formations, avec les infos qui sont présents dans la table
Mais voilà il manque les infos essentielles, à savoir le nombre d'inscrits (=nombre d'entrées de la table Inscriptions par rapport à chaque formation), nombre de présents/en liste d'attente/annulé (=nombre pour chaque formation selon le statut d'inscription), et le nombre pour chaque type de public (0-3, 3-12, ATL, ce sont des cases à cocher, j'aurais pu faire via une liste déroulante mais j'ai maintenu l'ancien système)
C'est typiquement les données que l'on manipule avec les requêtes, car ce sont des informations déduites car calculées

Voila comme je vois les choses dans un premier temps

La table Formation :
Elle me parait bien faite : présence d'un identifiant et inforamtions non redondantes dans les enregistrement. Tu peux la laisser telle quelle.

La table inscription :
Celle-ci pourrait être remaniée.
En fait, tu traites dans la même table 2 fonctions différentes :
- D'une part le public qui assiste aux formations
- d'autre part l'inscription aux formations elles-mêmes

De plus, je ne comprends pas bien la signification du type de public. S'agit-il d'une caractéristique attachée à la formation, ou à la personne qui y assiste ?
Dans le premier cas, il faut rattacher cette infomation à la table formation. Dans le second, plutôt à la table du public

Enfin, une question me vient naturellement à l'esprit : est-ce que les personnes peuvent venir à plusieurs formations ?

La solution que je propose serais d'éclater la tables des inscriptions en 2 (voire 3) :
Table 1 : le public assistant à la formation
Il contient les coordonnées de la personne (nom, prénom, adresse ...) et sa fonction (directrice de crèche, infirmière ..)
On peut aller plus loin, en créant une table des fonctions car ces personnes ont bien un profil commun. De plus, les formations sont destinées à une fonction, et non à une personne.

Table2 : L'inscription proprement dite
Elle contient : le code de la formation (clé étrangère) (1ère possibilité si pas d'évolution comme indiqué ci-après)
Le code de la personne assistant à la formation (clé étrangère)
La date de la formation

Evolution souhaitable
Il me semble que la même formation peut être dispensée à plusieurs endroits et à plusieurs dates. Il faudrait donc créer une table qui recense les mises à disposition de ces formation :
- identifiant du lieu de dispensiation de la formation (clé unique)
- identifiant de la formation (clé étrangère)
- lieu de la formation
- Date de la formation

Si cette évolution est prise en compte, il faudra plutôt mettre dans la table 2le code de dispensiation au lieu du code de la formation.

Voici un premiet jet auquel je te propose de réfléchir. Ensuite, on passera à la conception des requêtes.

N'hésite pas à revenir vers moi, et bon courage

Jean-Yves
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/01/2011, 09h35   #9
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Bonjour Jean-Yves
Merci de ta réponse

1) Les tables:
C'est ce que j'essaie de faire, je me suis mis une logique, de mettre des champs externes dans les tables lorsque ce sont des informations que je peux trouver dans d'autres tables (c'est le cas un peu partout)

J'ai créé la BD et la structure depuis l'année passée déjà, il y a une table pour les formations, une table pour les inscriptions, et une table pour les données perso.
Comme c'est une BD qui est destinée à accueillir de nouveaux secteurs, et que la notion 0-3 - 3-12 - ATL est seulement pour UN secteur, j'ai réparti aux tables qui me semblaient bonnes. Cette notion peut être multiple pour une même formation (pour faire bref, nous avons comme public des accueillant(e)s dans le 0-3 ans et le 3-12, et idem pour les responsables de projet, mais aussi des Coordinateurs ATL. Et d'autres secteurs utilisent d'autres fonctions (animateurs pour le secteur BACV, permanents/bénévoles/... pour un autre secteur, d'où la fonction qui sera mise dans Données Perso pour tout ce qui est global, et plus précisément dans les Inscriptions, vu que dans le bulletin d'inscription elles peuvent entrer des fonctions plus précises. Et même si ca peut sembler redondant, je préfère ce système vu que ca permet aussi de se rendre compte s'il y a des incohérences (c'est comme de dire que les betteraves sont des fruits...)
Les fonctions dans Inscriptions sont définissables par listes déroulantes et celles par Données perso sont en format texte, vu qu'il peut y avoir myriades de fonctions.

2) Requêtes
Cela veut-il dire que pour chaque table je dois faire une requête, que je dois lier au formulaire, ou bien je peux directement passer de la table au formulaire?
Donc ca veut dire aussi que pour le calcul je dois utiliser des requêtes. Mais je ne sais pas vraiment comment faire ce calcul que je t'ai expliqué ci dessus. Tu pourrais déjà passer par là, car je suis un peu pressé par le temps et si j'ai la solution assez rapidement je pourrai dire à ma chef "I did it" plutôt que de lui faire part de mes problèmes

Je ne sais pas concrètement comment faire ce calcul, de savoir compter le nombre d'entrées selon tel ou tel critère dans un champ. je me doute que c'est faisable mais je ne sais pas comment. J'ai un peu farfouillé dans le NWind fourni par Access mais sans trouver la solution.

3) Conclusion:
Oui je pense que mes tables sont assez bien constuites, j'ai suivi une formation de quelques jours (pour débutants) sur la logique des BD, avec la structure et tout, avec des exercices concrets sur des situations précises, et j'ai vraiment tout fait pour réduire la redondance au minimum.

Le public qui assiste aux formations sont stockées dans Données Perso
Toute personne peut s'inscrire à plusieurs formations, donc on peut trouver 2 inscriptions pour une même personne mais on a une et une seule personne dans la DP.

Pour ce qui est des dates et des lieux, j'ai une table Salle_Lieux et Salle_Locaux (afin d'éviter la redondance vu qu'il y a plusieurs locaux pour une même salle.

Je ne sais pas ce que tu as besoin d'autre pour m'aider mais j'aimerais bien que tu passes directement au code, histoire que je teste ca cette semaine et voir si ca marche. Je ne pense pas avoir de problèmes niveau structurel, mais plutôt concernant le code que je dois mettre dans la requête pour qu'elle m'affiche le calcul que je lui ai demandé, car actuellement je suis obligé de faire les calculs à la main d'après une liste des inscriptions de plusieurs pages que j'ai créé, hors ce serait bien que je puisse l'avoir sous forme de tableaux

Je connais l'équivalent sous Excel mais je ne sais pas comment m'y prendre sous Access pour faire des calculs selon des criitères sur plusieurs champs dans les requêtes.

Merci à toi (je mets souvent longtemps à progresser sous Access et quand j'y arrive je dis WAW et Eureka, mais là je sèche, et en fait je n'ai pas spécialement besoin d'aide concernant la structure, que je trouve assez bonne, mais concernant les codes.
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 12h02   #10
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour ZoliveR et bonne année.

J'ai rapidement regardé ton post. Je te réponds aussi rapidement car tu semble être pris par le temps.

1) sur les tables
Comme il me semble que le critère du type de public est primordial pour tes statistiques, il me semblerait pertinent d'externaliser cette donnée dans une table indépendante. Peut-être pas dans l'immédiat, mais peut avoir un impact immédiat dans les caluls.

2) sur les requêtes.
Bien sur, les formulaires / états peuvent être basés, soit sur les tables directement, soit sur les requêtes.
En général, je base mes formulaires sur les tables à partir du moment ou ceux-ci sont utilisés pour faire des ajouts / suppression / mises à jour. Car le problème du verouillage des données peut rapidement apparaitre lorsque on base les formulaires sur des requêtes.
Dans les autres cas, je préfère baser mes formulaires sur des requêtes, car i les sources des données proviennent de plusiurs tables, la conception du formulaire en sera grandement facilité (on n'a plus besoin de faire de jointure à partir du formulaire).

3) conclusion,

La question est de savoir comment tu souhaite présenter tes calculs.

Souhaites-tu présenter une liste détaillée, avec des calculs récapitulatif en bas de document ? Dans ce cas, les calculs peuvent être effectués dans un formulaire ou un état, et le(s) résultat(s) placés en bas de formulaire/état.

Si tu souhaites faire des statistiques globales et ne présenter que ces chiffres (ex : le nombres de personnes sur telle formation, répartie par telle cible ...), alors l'utilisation des requêtes me parait plus indiqué.

Ceci pour t'expliquer que cela peut influer sur le codage.
La plupart de tes calculs peuvent être directement être effectuées par les requêtes, donc en utilisant les fonctions natives du SQL; c'est à dire directement par les requêtes.

Si l'on passe à partir des formulaires/états, il y a de fortes chance que l'on doive passer par du codage VBA, ce qui n'évitera pas forcément d'y englober du SQL.
Personnellement, je préfère utiliser le VBA en dernier recours, et commencer d'abords par le SQL. Là, c'est toi qui fais comme tu le sens.

Dans l'immédiat, pour répondre à ton besoin, peux tu me communiquer la structure de tes tables ?
En effet, on peut sortir facilement tes calculs par une requête, mais celle-ci va nécessairement être basée sur des jointures et des fonctions de regroupement.
Avec ça, tu devrait pouvoir rapidement dire à ta chef "i did it" et tu pourras aussi lui lui annoncer "Yes, we can" à la manière de ...
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/01/2011, 15h31   #11
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Merci beaucoup pour ta réponse, et bonne année

Externaliser le 0-3 3-12 ATL ou la fonction?
Je te mets d'emblée la structure comme ca tu as un coup d'oeil
http://img217.imageshack.us/img217/2710/cap07h.jpg

J'espère que la capture d'écran te convient
Pour les fonctions c'est une table que j'utilise pour afficher la liste déroulante ^^

Donc utiliser des formulaires sur des tables quand c'est juste de la modif, et sur les requêtes quand recoupement sur plusieurs tables, quand calcul, quand tri sur un champ, et quand filtre, tout ca me parait logique

J'ai notamment réussi, précédemment, le tour de force d'avoir un formulaire avec liste déroulante où je sélectionne la formation, et avec des boutons, pour m'afficher un état avec la liste des participants pour la formation sélectionnée, et aussi un état om j'utilise du publipostage. Je n'ai pas encore abordé le publipostage Access > Word alors je fais du tout Access en attendant ^^

Mais revenons à nos moutons


3) Pour les calculs, ce serait des calculs dans un tableau (je te remets la capture d'écran en question

http://www.developpez.net/forums/att...cul/cap04.jpg/

Le calcul sur les présents se base sur le nombre de "Présent", pour chaque formation, dans le champ Inscription_Statut (idem pour LA: "En liste d'attente" et Annulé: "Annulé")

Le calcul sur 0-3 ; 3-12 ; ATL correspond au nombre de Vrai (case cochée), pour chaque formation, dans le champ 0_3 ; 3_12 ; et ATL

Le nombre d'inscrits c'est tout simplement le nombre total d'enregistrements, pour chaque formation, peu importe le statut d'inscription et peu importe le 0_3/3_12/ATL


Le plus simple donc pour moi c'est que tu me donne déjà le code pour ce dernier, et puis ce sera une base pour moi pour les autres.

Car sous Access je ne sais pas comment m'y prendre. Sous Excel, chaque ligne pouvait avoir son code, et je pouvais le recopier le code à partir de B2 pour faire avec B3, B4,... etc. Mais sous access il n'y a qu'une seule ligne pour la requête, et un seul champ dans état, donc je soupçonne que le Bx sera l'ID de la formation, qu'il faut aller récupérer dans le champ Formation de la table T_FE_Inscription_1011, mais je ne sais pas comment traduire tout ca. Mais je pressens déjà que je préfère le faire via requête, j'ai déjà vu que je devais faire comme ca NomChamps: Code , mais pour le code je sais pas comment traduire pour le calcul que je demande ^^

Un tout grand merci pour dénouer le schmilblick! Une fois que j'aurai le code sous les yeux je pourrai dire "WAW", "Eurêka" et avancer


J'essaie déjà en attendant d'avancer dans ce que je peux
Avant Office 2010 j'avais créé un menu de démarrage automatique, que j'ai abandonné pour le Volet, que je trouve excellent car avec le volet on peut utiliser des noms différents comme raccourcis (simplification pour tous) et créer des catégories par secteurs

Créer une base de données, c'est une chose, la perfectionner pour répondre aux besoins, et l'expliquer à tous, c'est une autre chose ^^
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 07h01   #12
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
"Un petit exemple vaut mieux qu'un grand discours"

Je t'envoie donc un exemple que j'ai fait en m'inspirant de ta base
Pièce jointe 71337
Je te laisse découvrir et j'attends tes questions

Bon courage,

Jean-Yves
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 13h38   #13
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Waw! Je ne pensais pas que c'était si simple! Merci beaucoup pour ton exemple, je vais m'en inspirer pour faire mes requêtes et intégrer ca dans mon état ^^

Un tout tout tout tout tout grand merci pour ton aide!
Je te tiens au courant par la suite pour te dire que tout se passe bien
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 12h13   #14
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Voilà je t'apporte de mes nouvelles

Ca maaaaarche!

Voici le résultat ici:
http://img213.imageshack.us/img213/668/cap08e.jpg

Donc voila, parfait à 95%
Dernière petite chose (mais si tu sais pas c'est pas grave)
Y a t'il moyen de mettre des 0 quand c'est blanc? Est ce que ca se fait via la mise en forme conditionnel ou via autre chose, dans l'état?

Un grand grand grand merci!
Youpie I did it, grâce à toi

Prochaine étape, faire des requêtes personnalisées
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 14h01   #15
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour Zoliver,

Heureux que tu aies pu t'en sortir.

Pour afficher les 0, rien de plus simple. Ca se fait dans le SQL.
Tu as pu noter dans mon exemple que j'avait fait des jointures ouvertes (ce qui se traduit par des LEFT JOiN ou des RIGHT JOIN au lieu de INNER JOIN).
Cette notion est fondamentale pour faire apparaitre dous les enregistrements d'une tables même ci ceux de la table liée n'existe pas. Tu as pu donc remarquer que cela restituait des blancs dans ces lignes. Ce qui dans le SQL se traduit pas des valeur nulles.

Il te suffit donc, pour les champs qui sont susceptible de restituer la valeur nulle, de coder dans ta requête de la maniere suivante

Code :
1
2
SELECT ...., IIF(ISNULL([ma_table].[ma_valeur]),0,[ma_table].[ma_valeur]) 
AS ma_valeur... FROM ma_table ....
,

soit, dans le mode construction

Pièce jointe 71418

Ce Qui se traduit par exemple dans le SQL de la requête "Statistiques" que je t'avais envoyé :

Code :
1
2
SELECT T_FE_Formation_0910.FOrmation_nom, T_FE_Formation_0910.Dates, T_FE_Formation_0910.lieu, iif(isnull(Présents.Présents),0,Présents.Présents) as Présents,  iif(isnull([0-3].[0-3]),0,[0-3].[0-3]) AS [0-3], iif(isnull([3-12].[3-12]),0,[3-12].[3-12]) AS [3-12], iif(isnull(ATL.ATL),0,ATL.ATL) AS ATL, iif(isnull([Nombre d'inscrits].Inscrits),0,[Nombre d'inscrits].Inscrits) AS Inscrits, iif(isnull(LA.LA),0,LA.LA) AS LA, iif(isnull(Absents.Absents),0,Absents.Absents) AS Absents
FROM (((((([Nombre d'inscrits] LEFT JOIN Présents ON [Nombre d'inscrits].formation=Présents.formation) LEFT JOIN [0-3] ON [Nombre d'inscrits].formation=[0-3].formation) LEFT JOIN [3-12] ON [Nombre d'inscrits].formation=[3-12].formation) LEFT JOIN ATL ON [Nombre d'inscrits].formation=ATL.formation) LEFT JOIN LA ON [Nombre d'inscrits].formation=LA.formation) LEFT JOIN Absents ON [Nombre d'inscrits].formation=Absents.formation) INNER JOIN T_FE_Formation_0910 ON [Nombre d'inscrits].formation=T_FE_Formation_0910.FE_Formation_Id;
Tu pourras voir directement le résultat dans la requête.
(Fait un copier-coller du SQL dans la requete de la base exemple que je t'avais fait parvenir et ré-éxécute l'état)


Attention de bien respecter l'alias AS ma_valeur et de garder exactement le même nom d'origine, afin de ne pas être obligé de modifier l'état

Bonne chance et dis nous quoi pour la suite
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/01/2011, 14h31   #16
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Ok je vais essayer. Comme je n'y suis pas encore parvenu je laisse ca pour plus tard en attendant, c'est pas vraiment une de mes priorités

Vu que j'ai un mal de tête je vais pas tenter le diable

Un grand merci
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h45.


 
 
 
 
Partenaires

Hébergement Web