Récupérer des données dans liste déroulante
Résoluyg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je viens vers vous car je n'y arrive pas, je suis entrain d'essayer de faire en sorte que quand je choisisse une ligne dans ma liste déroulante celle-ci remplissement automatiquement les champs CodeVariante et Emplacement qui sont situé sur le formulaire:
Sauf que sur la capture ci-dessus j'avais sélectionné la ligne avec Ref = test1 et CodeVariante = RAL 1002 et il ma affiché l'enregistrement avec CodeVariante = RAL1000.
Le code que j'utilise actuellement :
Private Sub Ref_Change() Set base = Application.CurrentDb Set ligne = base.OpenRecordset("SELECT CodeVariante, Emplacement FROM StocksEm WHERE Ref='" & Ref.Value & "'", dbOpenDynaset) ligne.MoveFirst CodeVariante.Value = ligne.Fields("CodeVariante").Value Emplacement.Value = ligne.Fields("Emplacement").Value ligne.Close base.Close Set ligne = Nothing Set base = Nothing End Sub
Merci par avance
Cdlt
Windows / Chrome 109.0.0.0
- Récupérer des données dans liste déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Recuperer message whatsapp supprimé - Guide
- Trier des données excel - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
3 réponses
Bonjour,
Vous avez x fois la meme reference x fois . Pour faire une recherche sure, il faut ajouter dans votre base un numero unique d'enregistrement.
Ce numero vous devez l'inclure dans un colone de la listbox.
De cette facon vous faites la recherche avec ce numero unique
Bonjour,
D'accord donc si j'utilise ma clé primaire qui est nommé IdStocks (NuméroAuto) cela pourrait fonctionner ?
je dois juste changer le WHERE dans mon code ?
Merci je vais essayer
En effet cela fonctionne mais j'ai maintenant un autre problème auxquels je m'attendais, J'ai donc pris le champ de ma clé primaire qui est forcément unique et qui était sur NuméroAuto, pour que ça fonctionne j'ai dû changer NumAuto par un autre type seulement maintenant au moment d'insérer des données forcément ça ne fonctionne plus.
Je vais essayer de faire en sorte que pour chaque insertion d'un enregistrement et chaque enregistrement est un numéro unique, qui s'incrémente de 1 et que j'insère.
En effet ce n'était pas du tout une bonne idée parce que mon INSERT ne fonctionnait plus ce qui est logique.
Je suis entrain d'essayer de faire en sorte que le champ RefNum que j'ai créer s'incrémente de +1 à chaque insertion et que ce même numéro soit insérer aussi dans la table pour fonctionné comme un deuxième champ NumAuto seulement pour le moment je n'y arrive pas.
ElseIf DCount("*", "StocksEm", "Ref = '" & rstS.Fields("Ref") & "'" _ & " AND CodeVariante = '" & rstS.Fields("CodeVariante") & "'" _ & " AND Emplacement = '" & rstS.Fields("Emplacement") & "'") = 0 Then maVariable = Forms("F_NewStock").Controls("Dernier").Value maVariable = maVariable + 1 MsgBox (maVariable) strSql = "INSERT INTO StocksEm (Ref,Qte,NumBl,DateS,Emplacement,Provenance,CodeVariante,Numero)" _ & " SELECT NewStocks.Ref, NewStocks.Qte, NewStocks.NumBl, NewStocks.DateS, NewStocks.Emplacement, NewStocks.Provenance, NewStocks.CodeVariante, " & maVariable & " " _ & " FROM NewStocks" _ & " WHERE Ref = '" & rstS.Fields("Ref") & "'" CurrentDb.Execute strSql, dbFailOnError
Celui-ci ne fonctionnait plus car j'avais changé le type de ma clé primaire (Numauto vers Numérique)
car une clé primaire n'accepte pas les doublons hors j'en ai besoin car certaine Ref apparaisse plusieurs fois mais ont un champ qui diffère.
La actuellement j'ai quasiment réussi, à chaque insertion mon champ Numero s'incrémente de 1 ce qui agis comme je le souhaitais comme une sorte de deuxième NuméroAuto.
Ensuite j'ai un champ nommé IdRef (bleu ci-dessous) qui est une liste déroulante et ces lui qui contient le champ Numero que j'incrémente de 1 par rapport a la valeur du dernier enregistrement en rouge ci-dessous
Voici le code (Sur changement de IdRef) :
Private Sub IdRef_Change() Dim ligne As Recordset: Dim base As Database Set base = Application.CurrentDb Set ligne = base.OpenRecordset("SELECT Ref, CodeVariante, Emplacement, NumBl FROM StocksEm WHERE Numero= '" & IdRef & "' ", dbOpenDynaset) Ref.Value = ligne.Fields("Ref").Value CodeVariante.Value = ligne.Fields("CodeVariante").Value Emplacement.Value = ligne.Fields("Emplacement").Value ligne.Close base.Close Set ligne = Nothing Set base = Nothing End Sub
Cela fonctionne et ça rempli les champs comme je souhaite aux choix de l'enregistrement grâce à IdRef mais que lorsque je change Numero en texte court hors je veux que ce soit un Numérique sinon je ne récupère pas la valeur max du champ Numero et cela ne fonctionne plus