Pb enregistrement contenu listes dér. imbriqu

FVR812 -  
 FVR812 -
Bonjour,https://www.cjoint.com/?geuzjm2eDZ
PB enregistrement contenu listes déroulantes imbriquées
Bonjour, Je suis profane en ACCESS 2003, et en grappillant des conseils sur les forums, j’ai réussi à faire 4 listes déroulantes imbriquées pour identifier des écoles d’un système éducatif africain (région (Wilaya ici), Département (Moughataa ici), Commune, Nom de l’école, et Code administratif). Les contrôles de listes déroulantes se voient dans le Formulaire F-FComplet. Les Wilayas, Moughataa, Commune, etr écoles y sont saisies par leur nom. Les tables où ils vont chercher les données s’appellent TBLWILAYA, TBLMOUGHATAA, TBLCOMMUNE, et TBLECOLE. Ces données s’enregistrent dans la table TFcomplet. Mon problème c’est que ce sont les N° auto d’identifications des tables qui s’enregistrent et non les noms saisis dans les listes déroulantes. Comment faire pour que ce soient les noms réels qui s’enregistrent, que je puisse présenter correctement dans un état et pas les N° ?
La BD est à : https://www.cjoint.com/?geuzjm2eDZ
Merci de vos conseils, cordialement.
Configuration: Windows XP
Internet Explorer 7.0

19 réponses

  1. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonsoir,
    Dans vos tables "TBLWILAYA, TBLMOUGHATAA, TBLCOMMUNE, et TBLECOLE" les noms se trouvent dans la deuxième colonne.
    Vous devez donc modifier le numéro de la colonne lié dans chacune des listes déroulantes de votre formulaire; la valeur de la propriété "Colonne lié doit être 2 et non pas 1.
    0
  2. FVR812
     
    Bonjour Jean Pierre et merci. Effectivement en changeant la colonne liée ce sont bien les noms qui vont s'enregistrer dans la table, mais ça crée un autre problème inattendu : c'est que les listes imbriquées ne fonctionnent alors plus : lorsque je sélectionne une WILAYA dans le 1° ccontrôle, le contrôle MOUGHATA suivant n'affiche plus les moughataa correspoindantes de la wilaya et ainsi dessuite. Que devrais-je faire d'après vous ? ca ne doit pas être bien complexe parce que ça relmarche dès qu'on revient à colonne liée 1. Merci de vos conseils, cordialement.
    0
  3. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour Alain,
    Si vos listes déroulantes sont renseignées par des macros il faut contrôler que le code travail avec les valeurs correctes.
    0
  4. FVR812
     
    Re bonjour Jean Pierre, comme je suis nul, et que j'ai adapté péniblement ce code à partir d'un exemple trouvé sur un forum, pouvez-vous y jeter un oeil et me dire pour quoi ça ne marche plus en ayant remplacé la colonne liée1 par 2, ce qui effectivement permet d'enregistrer les noms. Le dernier code listwilaya (régions) "gère" les moughatta les sélectionne, à partir de la simple liste déroulante des wilayas cliquées, le second en remontants lst moughataa(départements) , "gère" les communes en sélectionnant celles qui apparatiennent à la moughata cliquée , et le 3° ci-dessous lstcommune "gère" les écoles sélectionnées "de la même manière. Le petit code lstECOLE du milieu fait apparaître les codes administratifs sur le formulaire en même temps que l'école (c'est un pro de passage qui me l'a fait) Merci, cordialement.

    Private Sub lstCOMMUNE_AfterUpdate()
    Dim lngIDCOM As Long
    Dim SQL As String

    '' Vérifie que l'on a cliqué sur une COMMUNE pour éviter le NULL
    If Not IsNumeric(Me!lstCOMMUNE) Then Exit Sub
    '' Affecte la valeur de IDCOMMUNE à la variable lngIDCOM
    lngIDCOM = Me!lstCOMMUNE
    '' Construit la chaîne SQL avec la catégorie concernée
    SQL = "SELECT IDECOLE, ECOLE, IDCOMMUNE FROM TBLECOLE WHERE IDCOMMUNE =" & lngIDCOM & " ORDER BY ECOLE"
    '' Affecte la chaîne SQL à la liste des ECOLE
    lstECOLE.RowSource = SQL
    '' Déverrouille la liste des ECOLE
    lstECOLE.Enabled = True
    '' Donne le focus la liste des ECOLE
    lstECOLE.SetFocus
    '' On ne peut pas dérouler une la liste
    End Sub

    Private Sub lstECOLE_Change()
    lstCode.Value = DLookup("[CODE]", "TBLECOLE", "[IDECOLE]=lstEcole.value")
    End Sub

    Private Sub lstMOUGHATAA_AfterUpdate()
    Dim lngIDMOU As Long
    Dim SQL As String

    '' Vérifie que l'on a cliqué sur une MOUGHATAA pour éviter le NULL
    If Not IsNumeric(Me!lstMOUGHATAA) Then Exit Sub
    '' Affecte la valeur de IDMOUGHATAA à la variable lngIDMOU
    lngIDMOU = Me!lstMOUGHATAA
    '' Construit la chaîne SQL avec la catégorie concernée
    SQL = "SELECT IDCOMMUNE, COMMUNE, IDMOUGHATAA FROM TBLCOMMUNE WHERE IDMOUGHATAA =" & lngIDMOU & " ORDER BY COMMUNE"
    '' Affecte la chaîne SQL à la liste des COMMUNE
    lstCOMMUNE.RowSource = SQL
    '' Déverrouille la liste des COMMUNE
    lstCOMMUNE.Enabled = True
    '' Donne le focus la liste des COMMUNE
    lstCOMMUNE.SetFocus

    End Sub
    Private Sub lstWILAYA_AfterUpdate()
    Dim lngIDWIL As Long
    Dim SQL As String

    '' Vérifie que l'on a cliqué sur une WILAYA pour éviter le NULL
    If Not IsNumeric(Me!lstWILAYA) Then Exit Sub
    '' Affecte la valeur de IDWILAYA à la variable lngIDWIL
    lngIDWIL = Me!lstWILAYA
    '' Construit la chaîne SQL avec la catégorie concernée
    SQL = "SELECT IDMOUGHATAA, MOUGHATAA, IDWILAYA FROM TBLMOUGHATAA WHERE IDWILAYA =" & lngIDWIL & " ORDER BY MOUGHATAA"
    '' Affecte la chaîne SQL à la liste des MOUGHATAA
    lstMOUGHATAA.RowSource = SQL
    '' Déverrouille la liste des MOUGHATAA
    lstMOUGHATAA.Enabled = True
    '' Donne le focus la liste des MOUGHATAA
    lstMOUGHATAA.SetFocus
    '' On ne peut pas dérouler une la liste

    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonsoir Alain,
    Merci pour l'envoi de la macro. Je constate qu'elles sont basées sur le numéro d'identification de chacune des tables et qu'il n'est pas possible de les modifier sans aussi modifier la base de travail.
    N'ayant pas les tables et formulaire à disposition pour contrôler exactement la configuration utilisée, je ne peux rien faire de positif. Il vous faut donc remettre la valeur de colonne liée sur 1 et vous retrouver les valeurs numériques dans la table.
    0
  7. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour Alain,
    Il m’est impossible de lire un dossier avec l’extension *.rar. Donc je ne peux pas consulter votre base de données.
    Toutefois j’ai avalisée vos macros et selon le code utilisé j’en déduis que la base contient les tables suivantes :
    TBLECOLE avec liaison IDCOMMUNE
    TBLCOMMUNE avec liaison IDMOUGHATAA
    TBLMOUGHATAA avec liaison IDWILAYA
    et probablement une table de départ qui est TBLWILAYA.
    Dans se sens je vous propose de faire ce qui suit :
    1.- Ouvrir la table TBLECOLE en mode création
    2.- Dans la colonne Nom du champ, sélectionner IDCOMMUNE
    3.- Dans propriétés du champ, clic sur l’onglet Liste de choix
    4.- Vous devez avoir sous Afficher le contrôle : Zone de liste déroulante –
    5.- Sous Colonne lié vous entrez la valeur 2
    6.- Enregistrer la modification et fermer la table.
    7.- Vous recommencez la procédure pour les tables TBLCOMMUNE avec le champ IDMOUGHATAA et TBLMOUGHATAA avec le champ IDWILAYA

    Dernière opération que vous connaissez, modifier le numéro de la colonne lié sur 2 pour les 4 contrôles de liste déroulante du formulaire.

    Bon travail.
    0
  8. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour Alain,
    J’ai oublié qu’il faut encore modifier le petit code lstECOLE
    Le voici corrigé :
    Private Sub lstECOLE_Change()
    lstCode.Value = DLookup("[CODE]", "TBLECOLE", "[ECOLE]=lstEcole.value")
    End Sub
    0
    1. FVR812
       
      Re-bonjour et merci encore pour tout le mal que vous vous donnez avec vos explications. J'ai appliqué à la la lettre, les noms s'enregistrent bien dans la table, mais à ce moment là c'est le système de listes déroulantes imbriquées qui ne marche plus et dès lla 1° saisie sur la liste WILAYA, alors que si on laisse tel quel avec les codes que je vous ai envoyé, ça fonctionne mais ce ne sont que les n° ID qui vont s'enregistrer : je m'arrache les cheveux, parce que cette solution est celle quiconviendrait tout à fait pour l'ajout d'établissement, voire pour la sélection dans le formulaire; Comme vous ne pouvez pas décompacter WINRAR, que ma base (déjà autocompactée) dans ACCESS) pèse 1336 ko, est ce qu'on a une solution pour vous la faire parvenir en fichier attaché ? Cordialement.
      0
  9. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour Alain,
    Merci pour vos informations.
    Je viens de trouver, en consultant votre base du 8 mai 2008, que les tables ("TBLWILAYA, TBLMOUGHATAA, TBLCOMMUNE, et TBLECOLE") ont une clef primaire et de ce fait les macros servant à renseigner les listes déroulantes fonctionnent sur la base de cette clef primaire. Dans ce cas ma proposition n’est pas valable est doit être abandonnée.

    Pour l’instant vous devez vous satisfaire avec le n° d’identification dans votre table principale ce qui ne gène en rien car dans les formulaires et les états que vous utiliserez pour les analyses, statistiques, impressions partielles, etc. vous aurez toujours les valeurs sous formes de texte.

    Concernant le « WINVAR » je vais regarder comment faire car j’utilise le ZIP. Au fait si vous avez le Windows XP alors vous pouvez utiliser l’utilitaire de compression « Dossier compressé » qui est intégré.

    Sur CCM il n’y a pas la possibilité de le faire par fichier attaché, il faut passer par un intermédiaire (exemple. www.cijoint.fr, www.cjoint.com , etc.) ou alors en direct.

    Bonne fin de semaine.
    0
  10. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Je vous propose de faire comme suit :
    Dans le formulaire vous mettez la colonne liée sur 2 pour les 4 listes déroulantes.
    Ensuite vous remplacez les macros correspondantes par celles ci-dessous :

    Private Sub lstWILAYA_AfterUpdate()
    Dim idwil
    Dim SQL As String

    idwil = DLookup("[IDWILAYA]", "TBLWILAYA", "[WILAYA]=lstWILAYA")
    If IsNull(idwil) Then Exit Sub
    SQL = "SELECT IDMOUGHATAA, MOUGHATAA, IDWILAYA FROM TBLMOUGHATAA WHERE IDWILAYA =" & idwil & " ORDER BY MOUGHATAA"
    lstMOUGHATAA.RowSource = SQL
    lstMOUGHATAA.SetFocus
    End Sub

    Private Sub lstMOUGHATAA_AfterUpdate()
    Dim idmou
    Dim SQL As String

    idmou = DLookup("[IDMOUGHATAA]", "TBLMOUGHATAA", "[MOUGHATAA]=lstMOUGHATAA")
    If IsNull(idmou) Then Exit Sub
    SQL = "SELECT IDCOMMUNE, COMMUNE, IDMOUGHATAA FROM TBLCOMMUNE WHERE IDMOUGHATAA =" & idmou & " ORDER BY COMMUNE"
    lstCOMMUNE.RowSource = SQL
    lstCOMMUNE.SetFocus
    End Sub

    Private Sub lstCOMMUNE_AfterUpdate()
    Dim idcom
    Dim SQL As String

    idcom = DLookup("[IDCOMMUNE]", "TBLCOMMUNE", "[COMMUNE]=lstCOMMUNE")
    If IsNull(idmou) Then Exit Sub
    SQL = "SELECT IDECOLE, ECOLE, IDCOMMUNE FROM TBLECOLE WHERE IDCOMMUNE =" & idcom & " ORDER BY ECOLE"
    lstECOLE.RowSource = SQL
    lstECOLE.SetFocus
    End Sub

    Private Sub lstECOLE_Change()
    lstCode.Value = DLookup("[CODE]", "TBLECOLE", "[ECOLE]=lstEcole.value")
    End Sub

    Bon dimanche.
    0
    1. FVR812
       
      Bonjour Jean Pierre, avec le nouveau code ça marche bien, listes et enregistrements. Merci encore !
      J'utilise ce code pour ajouter de nouveaux enregistrements (nouvelles écoles) dans ma table principale, mais j'a un petit problème que je vais soumettre au forum : j'ai fait une requête ajout qui enregistre ces nouveaux enregistrements dans la table principale, lancée par un bouton sur le formulaire ajout. Le problème c'est que celui qui saisit peut rentrer plusieurs nouvelles écoles, qui s'enregistrents dans la table nouvelle école, et en cliquant sur le bouton les nouvelles écoles (3 par exemple) via la requête vont s'enregistrer sans problème dans la table principale : s'il en rajoute une 4° et qu'il reclique, c'e sont 4 enregistrements qui partent vers la table principale, dont les 3 premiers inutilement en double. Auriez-vous une idée pour que le bouton ,ne commande qu'un seul enregistrement à la fois ? Merci encore. Cordialement.
      0
  11. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Merci de votre réponse et de constater que cela fonctionne.
    Pour la suite, c'est impossible de comprendre vos explications. Avez-vous fait un plan de travail pour votre BD !
    Voir un schéma explicatif dont voici un exemple : http://www.cijoint.fr/cjlink.php?file=cj200806/cijTmjnRFh.ppt
    La BD réalisée qui correspond au schéma est disponible comme exemple, sur demande.
    0
    1. FVR812
       
      Re bonjour Jean Pierre, je ne suis pas un pro de l'organigramme, mais voila comment j'ai essayé sur EXCEL de concrétiser ma question:
      https://www.cjoint.com/?giukD7c3F8

      Cordaieleme,nt
      0
  12. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonsoir,
    Merci pour l'information.
    Quand je vous demande, avez-vous fait un plan de travail pour votre BD, cela est valable pour toute la bd et non pour cette partie intermédiaire car justement quelque chose ne marche pas.
    Alors, encore une fois avez-vous un plan ou une description sommaire ?
    0
  13. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour Alain,
    Si joint la BD réalisée sur la base de vos données mais avec ma conception.
    J'espère que cela vous aidera dans votre travail.
    Voir sous : http://www.cijoint.fr/cjlink.php?file=cj200806/cijt3HEKBn.zip
    Bonne découverte.
    0
    1. FVR812
       
      Qu'est ce que c'est sympa Jean Pierre, ce n'est pas tous les jours que se manifestent une telle solidarité et fraternité. Il me faut le temps de digérer tout, mais ça présente super bien. Je vais essayer d'adapter tout ça. Dès que j'ai essayé par contre NOUVELLES DONNEES, rentré les 5 identifiants de l'école, le bouton POURSUIVRE me renvoie un message d'erreur d'exécution 2448, et en cliquant sur débogage, la 4° ligne apparaît surlignée en jaune :

      Private Sub btoPoursuivre_Click()
      If IsNull(lierCode) Then Exit Sub
      DoCmd.OpenForm "F_SaisieAOnglet", acNormal, , , acFormAdd
      Form_F_SaisieAOnglet![chxWilaya] = Me.identWilaya
      Form_F_SaisieAOnglet![chxWilaya].Locked = True
      Form_F_SaisieAOnglet![chxMoughataa] = Me.identMoughataa
      Form_F_SaisieAOnglet![chxMoughataa].Locked = True
      Form_F_SaisieAOnglet![chxCommune] = Me.identCommune
      Form_F_SaisieAOnglet![chxCommune].Locked = True
      Form_F_SaisieAOnglet![chxEcole] = Me.identEcole
      Form_F_SaisieAOnglet![chxEcole].Locked = True
      Form_F_SaisieAOnglet![lierCode] = Me.lierCode
      Form_F_SaisieAOnglet![lierCode].Locked = True
      DoCmd.Close acForm, "F_IdentifierEcole"
      End Sub

      Merci et bravo mais je crois que je vais devoir revenir vers vous parce que tout ça me passe un peu au dessus, la lumière ne vient pas toute seule. Merci encore.
      0
  14. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjouir Alain,
    Mentionnez les 5 identifiants de l'école, merci.
    0
  15. FVR812
     
    Je ne saisis pas trop ce que vous voulez que je vous dise Jean Pierre, les 5 identifiants sont les 5 contrôles WILAYA, MOUGHATAA, COMMUNE, ECOLE, CODE qui figurent en 1° page IDENTIFICATION DE L'ECOLE. Je les rentre donc, et c'est en cliquant sur le bouton POURSUIVRE qu'apparaît ce message d'erreur. Par contre, le bouton modification données exisrantes, ouvre sur un formulaire avec onglets remarquable que je n'aurais jamais songé à inventer (voir la lourdeur dumien). Cordialement.
    0
  16. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonsoir Alain,
    Je vous demande les 5 noms que vous avez choisis, car si la faute est sur la ligne : Form_F_SaisieAOnglet![chxWilaya] = Me.identWilaya ,. il est certain qu'il s'agit d'une donnée Wilaya probablement.

    La faute se produit-elle sur ma BD ou l'avez-vous modifié ! car tout est correct chez moi.
    0
    1. FVR812
       
      Voici 2 essais que je viens de faire
      ASSABA/ BARKEOL /BARKEOL/ BARKEOL LEBYADH/3020108
      NOUAKCHOTT 1/Arafat/Arafat/ARAFAT4/13010101
      et plusieurs autres; Je n'ai rien touché à la base (je suis bien incapable d'y modifier quoi que ce soit). Désolé, cordialement.
      0
  17. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonsoir Alain,
    Je viens à l'instant de finir les tests sur ma BD et tout fonctionne parfaitement.
    Qu'elle est votre version Access !

    Si vous entrer ceci : ADRAR, Aoujeft, Aoujeft, AOUJEFT -----> que se passe-t-il ?

    J'attends de vos nouvelles et si vous le désirez il est possible de se contacter directement, se sera plus rapide.
    --

    Salutations.
    Jean-Pierre
    0
  18. FVR812
     
    C'est sympa, mais je suis confus de voir que vous vous donnez tout ce mal et que je ne peux pas vous aider par incompétence sur ACCESS. Mon email est alainmante@yahoo.fr. Cordialement.
    0