Bonjour à tous,

Je suis nouveau sur le forum.

J'ai commencé un sujet de développement en vba sous excel (2019 et 2021) avec en lien vers une base Access.
Je ne suis pas une pointe sur vba et excel.

J'ai mis des combobox sur mon excel que je remplis en cherchant des données dans ma base Access.
Et puis je suis tombé sur le fait que l'on pouvait injecter dans une combobox des lignes avec deux entrées.

Car pour l'instant, je n'insère que des textes, et je dois reprendre ce texte pour rechercher l'id correspondante dans mes tables... soit une grosse perte de temps.

Ma première combobox je la rempli ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Sub RemplirListeNouveauThemeBatimentAffaire()
On Error Resume Next
 
Dim rEnr As Recordset
Dim dBase As Database
 
' On vide la liste déroulante
Sheets(sONGLET_GESTION).ListeNouveauThemeBatAffaire.Clear
Sheets(sONGLET_GESTION).ListeNouveauThemeBatAffaire.Value = ""
 
' On se connecte à la base avec le mot de passe
Set dBase = DBEngine.OpenDatabase(sVAR_CHEMINBD, False, True, sVAR_CONNECT)
 
' On lance une requete
Set rEnr = dBase.OpenRecordset("SELECT NumeroNomAffaire from TB_AFFAIRE ORDER BY NumeroAffaire ASC", dbOpenDynaset)
 
Sheets(sONGLET_GESTION).ListeNouveauThemeBatAffaire.AddItem sSELECTION_AFFAIRE
 
' On déplace le pointeur de lecture sur le premier élément
rEnr.MoveFirst
 
' On boucle tant que le pointeur lit quelque chose
Do
    Sheets(sONGLET_GESTION).ListeNouveauThemeBatAffaire.AddItem (rEnr.Fields("NumeroNomAffaire").Value)
 
    ' On passe au suivant
    rEnr.MoveNext
 
Loop Until rEnr.EOF = True
 
' On ferme
rEnr.Close
 
' On clos la base
dBase.Close
 
' On vide le pointeur
Set rEnr = Nothing
Set dBase = Nothing
 
Sheets(sONGLET_GESTION).ListeNouveauThemeBatAffaire.ListIndex = 0
 
End Sub
Et je voudrai donc remplacer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set rEnr = dBase.OpenRecordset("SELECT NumeroNomAffaire from TB_AFFAIRE ORDER BY NumeroAffaire ASC", dbOpenDynaset)
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set rEnr = dBase.OpenRecordset("SELECT id NumeroNomAffaire from TB_AFFAIRE ORDER BY NumeroAffaire ASC", dbOpenDynaset)
Et ensuite changer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Sheets(sONGLET_GESTION).ListeNouveauThemeBatAffaire.AddItem (rEnr.Fields("NumeroNomAffaire").Value)
Par une version ou j'insère l'id et NumeroNomAffaire

J'ai vu qu'après je dois jouer avec la largeur des colonnes, pour masquer l'id.

D'avance merci.