Liste déroulante dans un formulaire Access

Résolu
assyleri -  
 Acasanva -
Bonjour, je voudrais créer une zone de liste modifiable dans un formulaire Access telle que lorsqu'on entre une valeur n'appartenant pas à la table associée, celle-ci s'y ajoute automatiquement après avoir demandé de renseigner les autres attributs cette table.
Merci beaucoup si vous avez la solution !

9 réponses

  1. Utilisateur anonyme
     
    ben tu as des choses comme ça, en particulier comme celle-là d'ailleurs, illustrées dans la ou les bases de données exemple livrées avec Access. Personne ne pourra expliquer mieux que ces exemples :-/

    kinder.surprise,
    caractère banane
    2
    1. assyleri
       
      Je vais regarder, merci !
      0
  2. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    les valeurs possibles sont stockées dans la propriété rowsource de la liste.

    Elles sont séparées par des ; et (souvent) mises entre double-quotes : "

    Il suffit donc de récupérer la nouvelle valeur et de mettre à jour la propriété. Le code est à placer dans l'évènement Aprsè Maj et non dans "sur absence liste"

    Ca peut donner ça :
    Private Sub liste1_AfterUpdate()
    liste1.RowSource = liste1.RowSource + ";" + Chr(34) + liste1.Value + Chr(34)
    End Sub
    
    Les chr(34) sont là pour insérer un ", sinon, c'est trop compliqué de les doubler/tripler...
    2
    1. Acasanva
       
      Super!! Merci beacoupp, ca fais 1 heure que je cherche.
      0
  3. rodrigue62 Messages postés 201 Statut Membre 30
     
    Et si c'est une liste deroulante qui ne fait pas appel a une table existante (creer a partir de l'assistant). On a donc des champs deja dans la liste, mais je voudrais que lorsque l'on en ajoute un nouveau, celui fasse ensuite partit de la liste de choix.
    merci
    0
    1. vakov
       
      bonjour j ai le meme bleme ke toi et j aimerai ke tu me donne un coup d emain stp

      voilà mon probleme: je veux dans une liste deroulante ajouter des machine et de numero machine sans faire appel a koi ki se sois cad ds un table . je m explique je veux ke kant un technicien veux creer une AMDEC d abord il regarde sur la liste deroulante si la machine existe deja sino il ajoute en tapant diectement ds la liste deroulante le nom de la machine et apres il retrouve ds sa liste.
      deuximement je veux par exemple un message ki m avertit si le nom de la machine ajouter existe deja si oui voir vers... sino ajouter
      merci
      0
  4. rodrigue62 Messages postés 201 Statut Membre 30
     
    Merci en plus tes explications sont claires j'ai compris comment ca fonctionne, le seul petit probleme a cette commande est que chaque fois il me rajoute la valeur, donc quand j'en selectionne une deja presente dans la liste il me la rajoute quand meme ce qui fait qu'au bout d'un momment je me retrouve avec plusieurs fois la meme valeur
    N' y a t'il pas moyen d'utiliser une fonction DISTINCT ou un truc du genre comme en SQL?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Ben voui, t'as raison, j'l'avais pas vu...

    Faut dire que d'habitude, je fais autrement...

    On met les choix dans une table.

    Tu crées une table nommée "T_Liste" avec un champ nommé 'cle' qui est la clé primaire.

    Tu tapes ensuite ce code pour l'évènement "après maj" de ta liste déroulante :
    Private Sub liste1_AfterUpdate()
    Dim Str As String
    Dim Rs As QueryDef
    Str = "INSERT INTO T_Liste (cle) VALUES ('" + liste1.Value + "');"
    Set Rs = CurrentDb.CreateQueryDef("", Str)
    On Error Resume Next
    Rs.Execute dbFailOnError
    liste1.Requery
    End Sub

    Ca devrait aler mieux (j'ai testé !)
    0
  7. jean-phi972 Messages postés 2 Statut Membre
     
    Bonsoir à tous,
    j'ai créé une base de données et tout fonctionne (tables et requêtes).
    Voici m'a question :
    dans un formulaire, j'aimerais avoir deux ou plusieurs listes déroulantes sachant qu'en affichant les données dans une liste, puis une autre et ainsi de suite et en cliquant sur un bouton du style 'OK" la macro ainsi définie affiche le résultat.
    Exemple :
    1ère liste: les professions (médecins, véto, labo....).
    2ème liste: les villes d'un département.
    le bouton de commande affiche tous les docteurs qui habitent la ville X....
    Mon autre souci, c'est que je n'y connais RIEN en langage (VBA ou autre).
    Merci à qui me comprendra et bonne soirée à vous.
    0
  8. Baba75
     
    Bonjour,

    [ACCES2003]
    J'ai un sous_formulaire en mode continu, avec les 3 premiers champs liste déroulantes avec les valeurs par défaut issues d'une autre table (MOBILIER)
    Clé primaire : CodeObjet Index principal aucun doublons autorisés
    autres champs : Pièce ; Libéllé ; Volume

    En cours de saisie ligne par ligne de chaque enregistrements dans le sous formulaire [InventaireV1], je selectionne grâce aux liste déroulante la localisation du mobilier, sa catégorie et le libéllé exacte de l'objet, mais ce que je voudrais obtenir, c'est que dés que j'ai sélectionné la liste déroulante "Libelle" avec CodeObjet en 1er colonne cachée et Libéllé inseré dans le champs en cours..., mes deux autres champs [CodeObjet] et [Volume] vide au départ, puisse contenir la valeur du CodeObjet et surtout le Vollume pour l'objet selectionné, en vu d'un calcul en fiin de saisie du formulaire parent.

    J'espère avoir été clair dans mes explication, et merci par avance pour votre solution.
    0
  9. Xavier
     
    Bonjour,

    Dans l'évènement "sur abscence dans la liste " associer ce code
    Private Sub Modifiable39_NotInList(NewData As String, Response As Integer)
    ' Ajoute une nouvelle catégorie en entrant un nom
    ' dans la zone de liste modifiable [Code catégorie].

    Dim entNouvCatégorie As Integer, chTitre As String, entmsgDialogue As Integer

    ' Affiche une boîte de message demandant si l'utilisateur veut
    ' ajouter une nouvelle catégorie.
    chTitre = "Application absente de la liste"
    entmsgDialogue = vbYesNo + vbQuestion + vbDefaultButton1
    entNouvCatégorie = MsgBox("Voulez-vous ajouter une nouvelle application?", entmsgDialogue, chTitre)

    If entNouvCatégorie = vbYes Then
    ' Enlève le nouveau nom de la zone de liste modifiable Code catégorie
    ' de sorte que le contrôle puisse être actualisé lorsque l'utilisateur
    ' revient au formulaire.
    DoCmd.RunCommand acCmdUndo

    ' Affiche la boîte de message et ajuste la longueur de la chaîne
    ' entrée dans la zone de liste modifiable.

    ' Ouvre le formulaire Ajouter une catégorie.
    DoCmd.OpenForm "T-affaire", acNormal, , , acAdd, acDialog, NewData

    ' Continue sans afficher le message d'erreur par défaut.
    Response = acDataErrAdded
    End If
    End Sub
    -1
  10. assyleri
     
    Personne n'a donc la solution ? Sniff
    -2
    1. nehla
       
      donne moi ton adresse demain matin je te renvois la reponse ok
      0