IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Insérer automatiquement un nombre ?


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    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...

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut gsacre,

    pourrais tu transmettre une image ou mieux: une petite db histoire d'être sûr du contexte?
    merci.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Oui, comment dois je faire pour joindre une image (on me demande un http ou est stocké l'image)

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    icone: "Pièces jointes" et non "Insérer une image"


  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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 Images attachées  

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    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?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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.

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    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.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    je fais comment pour te faire parvenir la bd ?

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    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.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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 Fichiers attachés

  12. #12
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Classeman_AfterUpdate()
    [Nbre élèves].Requery
    End Sub

  13. #13
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    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.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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 ?

  15. #15
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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 ?

  16. #16
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.


  17. #17
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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..

  18. #18
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    voilà à quoi ca pourrait ressembler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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).


  19. #19
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    C'est tout simplement GENIAL.

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

    Merci beaucoup

  20. #20
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    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 ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA]Comment insérer automatiquement la date du jour
    Par DamKre dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/05/2007, 07h14
  2. calcule automatique du nombre des caractères
    Par orandriam dans le forum Excel
    Réponses: 1
    Dernier message: 20/03/2007, 14h20
  3. Réponses: 12
    Dernier message: 30/05/2006, 15h57
  4. Insérer automatiquement des boutons dans des cellules excel
    Par Oaurelius dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/11/2005, 18h38
  5. Insrer automatiquement une valeur!!
    Par mamiberkof dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/04/2005, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo