Récupérer des données dans liste déroulante

Résolu/Fermé
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 - Modifié le 26 janv. 2023 à 10:54
yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 - 30 janv. 2023 à 11:10

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

A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié le 26 janv. 2023 à 11:19

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

0
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1
Modifié le 26 janv. 2023 à 11:41

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 

0
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1
26 janv. 2023 à 14:53

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.

0
yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 1 477
27 janv. 2023 à 08:13

bonjour,

Pourquoi précisément as-tu changé le type du champ de ta clé primaire?  Je pense que ce n'est pas une bonne idée.

0
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1 > yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024
27 janv. 2023 à 14:05

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.

0
yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 1 477 > Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023
27 janv. 2023 à 14:39

Pourquoi quel INSERT ne fonctionnait plus?  Que faisait-il?

Comment un changement du SELECT a-t-il posé un problème à l'INSERT?

0
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1 > yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024
30 janv. 2023 à 09:30
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.

0
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1 > yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024
30 janv. 2023 à 09:37

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 

0