Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
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 16/11/2011, 10h55   #1
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
Par défaut Insérer automatiquement un nombre ?

Bonjour,

Je dispose , dans un formulaire existant, d'une liste déroulante dans laquelle je peux choisir soit un client particuliter (liée à une table contenant tous les noms de mes clients), soit (au même niveau) pas de client (pour pouvoir choisir un groupe)
Dans une autre liste déroulante (plus bas) se trouve la liste des groupes (avec case à cocher) et le nombre d'éléments par groupe.

Ex : Groupe "AA" - 14
Groupe "BGR" - 45
Groupe Blic" - 23

Encore plus bas dans mon formulaire, se trouve un champ reprenant le "nombre pour quantification"
Dans ce champ, je souhaite retrouver 1 si j'ai choisi un client particulier dans ma première liste ou le nombre d'émléments si j'ai choisi un groupe (ex 45 si j'ai choisi le groupe BGR, 59 si j'ai coché AA et BGR)

Est-ce possible automatiquement ?

Et surtout... comment ??

Merci d'avance pour votre aide.

Signé : un débutant qui progresse chaque jour en parcourant votre forum...
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 19h49   #2
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut gsacre,

pourrais tu transmettre une image ou mieux: une petite db histoire d'être sûr du contexte?
merci.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 12h14   #3
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
Oui, comment dois je faire pour joindre une image (on me demande un http ou est stocké l'image)
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 12h34   #4
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
icone: "Pièces jointes" et non "Insérer une image"

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h10   #5
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
OK.

voila un printscreen :

on y voit la liste déroulante "classeman".

Par exemple si je coche le groupe 1C2 (avec 22 personnes) et le groupe 1C9 (avec 15 personnes), je souhaiterais que le total (donc 37) s'indique automatiquement dans la case "Nombre activ."
Et que par défaut, le nombre indiqué dans cette dernière soit "1"

Voilà. si je dois vous donner d'autres infos, demandez...

Merci d'avance
Images attachées
Type de fichier : jpg Sans titreaccess.jpg (65,7 Ko, 17 affichages)
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h49   #6
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
ok.
quel est le type pour de la liste des groupes? requete/table/liste de valeur?
cette liste est elle longue? est elle mise à jour régulièrement?
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 08h41   #7
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
elle est basée sur une requete qui est liée à une table reprenant toutes les personnes et le groupe auquel elles appartiennent.
Elle est donc mise à jour en fonction de cette première liste.

Donc : J'ai une table "élèves" avec les coordonnées des élèves, leur école et leur classe.

Sur le formulaire (dont j'ai mis un printscreen), il y a une liste déroulante (liée à une requete) reprenant les écoles et une deuxième liste (celle dont je parlais) affichant les classes présentes dans l'école sélectionnée (dans ma première liste déroulante) ainsi que le nombre d'élèves par classe.

Cette dernière liste peut contenir max 100 éléments.
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 14h17   #8
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
je vois ces possibilités:
. utiliser une formule avec IIF, SWITCH, DSum... et éventuellement sur les événements maj un .Requery...
. coder une fonction pour sommer la zone de liste en utilisant .Column en complément avec une formule de IIF
. coder tout le calcule dans une fonction.

si tu veux plus d'aide le mieux serait de fournir une petite db parce que ca risque d'être un peu long d'accorder du code avec ton contexte surtout que tu es débutant.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 14h50   #9
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
je fais comment pour te faire parvenir la bd ?
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 16h19   #10
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
tu fais une copie de la base. tu supprimes le superflu. retire le contenu perso des tables. compacte si ce n'est fait pas automatiquement. t'en fais une archive compressé avec 7z, winrar...
et tu mets ca en pièce jointe dans le post.
merci.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 10h44   #11
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
Voilà. J'ai vidé la BD d'une partie de son contenu.

J'espère que cela permettra de trouver une solution.

Merci de votre aide.
Fichiers attachés
Type de fichier : rar bd exemple2.rar (128,8 Ko, 7 affichages)
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h11   #12
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut gsacre,

vu que certaines fonctions (join(), ubound()...) ne sont pas reconnu dans les formules je propose de passer par l'appel d'une fonction personnalisée:
le controle "Nbre élèves":
avec pour code: alt+f11 dans le module "Form_new form journalier" ou un nouveau
Code :
1
2
3
Function NbEleves()
NbEleves = IIf(IsNull(Ecoleman), Null, IIf(IsNull(Classeman), 1, DCount("*", "Eleves", "Ecole='" & [Ecoleman] & "' AND Instr('" & Join(Nz(Classeman.Value, Array()), ";") & ";', [Classe]&';')>0")))
End Function
une mise à jour du calcul s'impose:
Code :
1
2
3
Private Sub Classeman_AfterUpdate()
[Nbre élèves].Requery
End Sub
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/11/2011, 14h19   #13
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
ps: j'ai constaté une erreur quand au changement d'école. le champ classman doit être réinitialisé ce qui n'est pas fait et conduit à des erreurs après Classeman.Requery
et à noter que [Nbre élèves] devient un champ calculé et non plus un champ stocké... à toi de voir ce qui te convient et au quel cas de sauvegarder la valeur.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h50   #14
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
Merci pour cette réponse complxe.

Tu me dis que cela devient un champ calculé, cela veut dire quoi ? Que je ne peux le modifier ?

Où dois je encoder les formules de ton précédent message ?
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 15h17   #15
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
J'ai trouvé où l'encoder et cela fonctionne. Super grand merci

Juste qq problèmes :

Si je choisi une personne "Nom" et non pas un groupe "Ecoleman" puis "Classeman", la case "Nbre activ" reste vierge. Or, je voudrais que dans ce cas, cela me comptabilise "1"

Deuxième petit soucis : sur base de ce formulaire, j'avais réalisé une requete croisée calculant le nombre de chacune des activités par mois dans un tableau. Cela fonctionnait bien avant, lorsque j'encodais manuellement, mais maintenant avec la formule, il ne m'indique dans ce tableau que "1" au lieu du nombre calculé.

Est il possible de modifier cela ?
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 12h36   #16
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
un champ calculé effectivement veut dire qu'on ne peut éditer seulement que la formule pas sa valeur résultante mais surtout qu'il n'est pas stocké dans une table.

pour mettre la valeur à "1" si le [nom] est null, inspire toi du code nbEleves() qui se traduit par:

SI ecoleman EST NULL mettre NULL
SINON
SI classman EST NULL mettre "1"
SINON mettre le compte d'élèves.


je n'ai pas compris si cette condition et en plus ou pas, mais je ne doute pas que tu trouveras la bonne syntaxe.

pour ce qui est de ta requête croisée...
je pense comprendre le soucis, il doit être basé sur la valeur stocké [Nbre élèves]. il serait possible de reformuler la requête croisée pour remplacer ce champ par la formule mais cela va être compliqué pour toi.
donc je suggère de stoker cette valeur dans la table comme tu l'avais fait précédemment.

pour cela il faut que tu affectes la valeur du calcul dans le champ [Nbre élèves]
Code :
1
2
3
Private Sub Classeman_AfterUpdate()
[Nbre élèves]=NbEleves()
End Sub
il faut penser à verrouiller l'édition de ce champ pour qu'il ne soit pas modifiable manuellement et effectuer ce calcul non seulement après la mise à jour de classman mais aussi pour tous les champs qui affectent ce calcul.

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/12/2011, 11h00   #17
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
Merci pour toutes ces réponses, mais là, cela ne marche pas (je ne m'y prends peut être pas bien) :

J'ai donc besoin que s'inscrive dans le champ "Nbre élèves" de ma table "Journalier" le total du nombre d'élèves se trouvant dans les classes sélectionnées dans le champ "Classeman" si dans le champ "Nom" la valeur est égale à "1" (ce qui correspond à "---" et pas à un élève en particulier", si ce n'est pas le cas et que la valeur du champ "Nom" est différente de "1" alors, inscrire comme valeur dans le champ "Nbre élèves" la valeur "1"

Ce qui signifie : si je choisi 1 élève => Nbre élèves = 1
Si je choisi "---" dans le champ "Nom", cela veut dire que je sélectionne un groupe et donc Nbre élèves = total des élèves contenus dans les classes sélectionnées dans le champ "classeman"
Ce nombre inscrit dans le champ "Nbre élèves" de ma table "Journalier" sert dans une requète croisée.

Merci bcp de ton aide Vodiem, par les réponses, je devellope ma connaissance d'access..
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 09h49   #18
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
voilà à quoi ca pourrait ressembler:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Ecoleman_AfterUpdate()
Me.Classeman.Requery
Classeman.Value = Array()
[Nbre élèves] = Null
End Sub
 
Function NbEleves()
NbEleves = IIf(IsNull(Ecoleman), Null, IIf(IsNull(Classeman), 1, DCount("*", "Eleves", "Ecole='" & [Ecoleman] & "' AND Instr('" & Join(Nz(Classeman.Value, Array()), ";") & ";', [Classe]&';')>0")))
End Function
 
Private Sub Classeman_AfterUpdate()
[Nbre élèves] = NbEleves()
End Sub
 
Private Sub Nom_AfterUpdate()
Ecoleman = ""
Classeman.Value = Array()
If Nom.Value = 1 Then   'groupe
    [Nbre élèves] = Null
    Ecoleman.Enabled = True
    Classeman.Enabled = True
Else                    '1 élève
    [Nbre élèves] = 1
    Ecoleman.Enabled = False
    Classeman.Enabled = False
End If
End Sub
tant qu'une école et les classes ne sont pas sélectionnés le calcul ne se fait pas ainsi qu'à chaque changement comme élève>groupe ou choix d'une autre école (puisque les classes sont remis à zéro).

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/12/2011, 13h32   #19
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
C'est tout simplement GENIAL.

Je teste sur la base complète et te fais un retour.

Merci beaucoup
gsacre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 13h45   #20
Invité régulier
 
Homme
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 5
Points : 5
EXXXTRA

tu es formidable, c'est exactement ce que je cherchais (sans savoir si c'était possible). Vraiment un très très grand merci

Cela fonctionne impeccablement et ma requete croisée fonctionne.

Juste un petit soucis :

Si dans mon enregistrement 1, je sélectionne un élève, cela bloque l'acces aux champs "Ecoleman" et "Classeman", ce qui est très bien puisque je ne souhaite pas que l'on choisisse un élève et une classe.
Seul soucis, c'est que si je passe à l'enregistrement suivant, il semble avoir mémorisé cela et bloque donc aussi l'acces à ces champs (qui se débloquent si je clique sur le champ "nom" et sélectionne la valeur 1 (celle qui est affichée par défaut). Est-ce corrigeable ?
gsacre 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 13h37.


 
 
 
 
Partenaires

Hébergement Web