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:
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
Set rEnr = dBase.OpenRecordset("SELECT NumeroNomAffaire from TB_AFFAIRE ORDER BY NumeroAffaire ASC", dbOpenDynaset)
par
Set rEnr = dBase.OpenRecordset("SELECT id NumeroNomAffaire from TB_AFFAIRE ORDER BY NumeroAffaire ASC", dbOpenDynaset)
Et ensuite changer
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.
Partager