[VBA] requête SQl dans liste déroulante Excel

Résolu/Fermé
Nelieru Messages postés 9 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 juin 2008 - 30 mai 2008 à 11:48
Nelieru Messages postés 9 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 juin 2008 - 2 juin 2008 à 11:33
Bonjour amis internautes,

je requiert votre aide pour un problème qui me chagrine légèrement...

Je travail en ce moment sur la liaison de Microsoft Excel avec une base de données Access. Ma démarche est la suivante, par l'intermédiaire d'une requête SQL inclue dans un code VBA, je souhaite récupéré les données de ma requête dans une liste déroulante. Les données affichées dans cette liste permettront ainsi l'affichage d'autres données (dans une facture par exemple je choisi le nom de ma boite et les rensignements de celle ci s'affiche après: adresse telephone etc...)

J'ai donc procédé à des recherches afin de palier à mes besoins et ai trouvé ce petit vout de code:
-------------------------------------------------------------------------------------
Sub FillCombo()
Dim db As DAO.Database
Dim rec As DAO.Recordset
curshname = ActiveSheet.Name
Set db = DAO.OpenDatabase(ThisWorkbook.Path & "\Membres1.mdb", False, False)
Set rec = db.OpenRecordset("SELECT NomFamille FROM Membres WHERE DepartOuRegionTravail = 'WA'", DAO.dbOpenSnapshot)
For Each sh In ActiveWorkbook.Sheets(curshname).Shapes
If sh.Type = msoFormControl And sh.Name Like "Drop*" Then
sh.Select
Do While Not (rec.EOF)
Selection.AddItem rec.Fields(0).Value
rec.MoveNext
Loop
Exit For
End If
Next sh
rec.Close
db.Close
Set rec = Nothing
Set db = Nothing
End Sub
-------------------------------------------------------------------------------------

Je précise que ce code fonctionne très bien, en effet il me récupère bien les données dans la liste après avoir lancé la macro. Seulement un problème s'impose: si il me viens à nouveau de relancer la macro, les données de ma base viennet bien dans la liste déroulante seulement elles se rajoutent simplement et n'écrasent pas les données précédentes.

Ex: je récupère une premiere fois M. X et Mme Y, ensuite je relance la macro

==> ma liste déroulante contiendra:
M.X
Mme Y
M.X
Mme Y

J'avais donc pensé à remettre à zéro le contenu de la liste déroulante à chaque lancement de la macro, mais comment faire ?

Si vous avez d'autres solutions que celles-ci, n'hésitez pas :).


Merci d'avance.

Nelieru
A voir également:

1 réponse

Nelieru Messages postés 9 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 juin 2008 2
2 juin 2008 à 11:33
En fait je viens de trouver la solution, il suffisait d'utiliser la méthode Clear, et de la placer au début de l'éxecution...
0