|
|
|
|
Personne n'a donc la solution ? Sniff
|
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
|
|
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 |
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
|
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 SubLes chr(34) sont là pour insérer un ", sinon, c'est trop compliqué de les doubler/tripler... A+ Blux "Les cons, ça ose tout. C'est même à ça qu'on les reconnait" |
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? |
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é !) A+ Blux "Les cons, ça ose tout. C'est même à ça qu'on les reconnait" |
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. |
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. |
Résultats pour Liste déroulante dans un formulaire Access
Résultats pour Liste déroulante dans un formulaire Access
Résultats pour Liste déroulante dans un formulaire Access