VBA. Remplissage d'un tableau d'après une table de base de donnée
5 réponses
HD
Bonjour,
Pour remplir un combobox d'après les données d'une base de donnée Access je
lis les données de la table que je mets sur une feuille Excel puis seulement
j'ajoute les données au combobox....
Do
ComboBox1.AddItem Cells(i, 2).Value
i = i + 1
Loop Until Cells(i, 1).Value = ""
Mais y'a-t-il un moyen beaucoup plus rapide qui me permetterais de remplir
directement le combobox à partir de la table de données sans passer par une
feuille Excel intermédiaire ? Quelque chose du style :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Bonjour HD,
Voici 2 procédures qui font ce type de travail. Une utilisant DAO et l'autre ADO. Chacune demande d'ajouter une référence particulière à ton projet VBA selon celle que tu retiendras. Pour ce faire, dans la fenêtre VBE (visual basic editor), barre des menus / outils / référence / tu coches la référence indiquée dans chacune des procédures.
Dans les 2 cas, la requête utilise 3 champs, tu dois définir les propriétés de ton combobox pour avoir le nombre de colonne (ColumnCount) et ColumnWidths selon le nombre de champs de ta requête. Évidemment, tu devras adapter le nom des objets selon ceux de ton application.
'------------------------------------- Sub Access_Initialer_Un_Combobox_en_DAO()
'Testé à partir d'office 2000 et Windows pro 2000 'Requiert la référence : "Microsoft DAO 3.6 object librairy"
'La base de données Comptoir.mdb est disponible sur le CD 'd'installation d'office.
Dim DB As DAO.Database, Rst As DAO.Recordset Dim BD As String, Requete As String
'Fermeture de la connection entre excel et la base de données Cnt.Close
'Libération de l'espace mémoire occupé par les objets Set Rst = Nothing: Set Cnt = Nothing
End Sub '-------------------------------------
Salutations!
"HD" a écrit dans le message de news: Bonjour,
Pour remplir un combobox d'après les données d'une base de donnée Access je lis les données de la table que je mets sur une feuille Excel puis seulement j'ajoute les données au combobox....
Do ComboBox1.AddItem Cells(i, 2).Value i = i + 1 Loop Until Cells(i, 1).Value = ""
Mais y'a-t-il un moyen beaucoup plus rapide qui me permetterais de remplir directement le combobox à partir de la table de données sans passer par une feuille Excel intermédiaire ? Quelque chose du style :
Pour tout table.dos de table combobox = table.dos
Merci d'avance pour votre aide -- @+ HD
Bonjour HD,
Voici 2 procédures qui font ce type de travail. Une utilisant DAO et l'autre ADO. Chacune demande d'ajouter une référence
particulière à ton projet VBA selon celle que tu retiendras. Pour ce faire, dans la fenêtre VBE (visual basic editor), barre des
menus / outils / référence / tu coches la référence indiquée dans chacune des procédures.
Dans les 2 cas, la requête utilise 3 champs, tu dois définir les propriétés de ton combobox pour avoir le nombre de colonne
(ColumnCount) et ColumnWidths selon le nombre de champs de ta requête. Évidemment, tu devras adapter le nom des objets selon ceux
de ton application.
'-------------------------------------
Sub Access_Initialer_Un_Combobox_en_DAO()
'Testé à partir d'office 2000 et Windows pro 2000
'Requiert la référence : "Microsoft DAO 3.6 object librairy"
'La base de données Comptoir.mdb est disponible sur le CD
'd'installation d'office.
Dim DB As DAO.Database, Rst As DAO.Recordset
Dim BD As String, Requete As String
'Fermeture de la connection entre excel et la base de données
Cnt.Close
'Libération de l'espace mémoire occupé par les objets
Set Rst = Nothing: Set Cnt = Nothing
End Sub
'-------------------------------------
Salutations!
"HD" <hd@anti.spam.fr> a écrit dans le message de news: uOkQkneNFHA.508@TK2MSFTNGP12.phx.gbl...
Bonjour,
Pour remplir un combobox d'après les données d'une base de donnée Access je
lis les données de la table que je mets sur une feuille Excel puis seulement
j'ajoute les données au combobox....
Do
ComboBox1.AddItem Cells(i, 2).Value
i = i + 1
Loop Until Cells(i, 1).Value = ""
Mais y'a-t-il un moyen beaucoup plus rapide qui me permetterais de remplir
directement le combobox à partir de la table de données sans passer par une
feuille Excel intermédiaire ? Quelque chose du style :
Voici 2 procédures qui font ce type de travail. Une utilisant DAO et l'autre ADO. Chacune demande d'ajouter une référence particulière à ton projet VBA selon celle que tu retiendras. Pour ce faire, dans la fenêtre VBE (visual basic editor), barre des menus / outils / référence / tu coches la référence indiquée dans chacune des procédures.
Dans les 2 cas, la requête utilise 3 champs, tu dois définir les propriétés de ton combobox pour avoir le nombre de colonne (ColumnCount) et ColumnWidths selon le nombre de champs de ta requête. Évidemment, tu devras adapter le nom des objets selon ceux de ton application.
'------------------------------------- Sub Access_Initialer_Un_Combobox_en_DAO()
'Testé à partir d'office 2000 et Windows pro 2000 'Requiert la référence : "Microsoft DAO 3.6 object librairy"
'La base de données Comptoir.mdb est disponible sur le CD 'd'installation d'office.
Dim DB As DAO.Database, Rst As DAO.Recordset Dim BD As String, Requete As String
'Fermeture de la connection entre excel et la base de données Cnt.Close
'Libération de l'espace mémoire occupé par les objets Set Rst = Nothing: Set Cnt = Nothing
End Sub '-------------------------------------
Salutations!
"HD" a écrit dans le message de news: Bonjour,
Pour remplir un combobox d'après les données d'une base de donnée Access je lis les données de la table que je mets sur une feuille Excel puis seulement j'ajoute les données au combobox....
Do ComboBox1.AddItem Cells(i, 2).Value i = i + 1 Loop Until Cells(i, 1).Value = ""
Mais y'a-t-il un moyen beaucoup plus rapide qui me permetterais de remplir directement le combobox à partir de la table de données sans passer par une feuille Excel intermédiaire ? Quelque chose du style :
Pour tout table.dos de table combobox = table.dos
Merci d'avance pour votre aide -- @+ HD
HD
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb" Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE Fournisseurs.code = ' " & moncode & " ' " Set DB = DBEngine.Workspaces(0).OpenDatabase(BD) Set Rst = DB.OpenRecordset(Requete) Rst.MoveLast: Rst.MoveFirst MonFournisseur = Rst.GetRows(Rst.RecordCount) Rst.Close DB.Close Set Rst = Nothing: Set DB = Nothing
Cela ne fonctionne pas... : ((
-- @+ HD
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment
obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb"
Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE
Fournisseurs.code = ' " & moncode & " ' "
Set DB = DBEngine.Workspaces(0).OpenDatabase(BD)
Set Rst = DB.OpenRecordset(Requete)
Rst.MoveLast: Rst.MoveFirst
MonFournisseur = Rst.GetRows(Rst.RecordCount)
Rst.Close
DB.Close
Set Rst = Nothing: Set DB = Nothing
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb" Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE Fournisseurs.code = ' " & moncode & " ' " Set DB = DBEngine.Workspaces(0).OpenDatabase(BD) Set Rst = DB.OpenRecordset(Requete) Rst.MoveLast: Rst.MoveFirst MonFournisseur = Rst.GetRows(Rst.RecordCount) Rst.Close DB.Close Set Rst = Nothing: Set DB = Nothing
Cela ne fonctionne pas... : ((
-- @+ HD
Pierre CFI [mvp]
bonjour MonFournisseur = Rst(0)
-- Pierre CFI MVP Microsoft Access Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer Access http://users.skynet.be/mpfa/ Excel http://www.excelabo.net Site perso http://access.cfi.free.fr "HD" a écrit dans le message de news:
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb" Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE Fournisseurs.code = ' " & moncode & " ' " Set DB = DBEngine.Workspaces(0).OpenDatabase(BD) Set Rst = DB.OpenRecordset(Requete) Rst.MoveLast: Rst.MoveFirst MonFournisseur = Rst.GetRows(Rst.RecordCount) Rst.Close DB.Close Set Rst = Nothing: Set DB = Nothing
Cela ne fonctionne pas... : ((
-- @+ HD
bonjour
MonFournisseur = Rst(0)
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"HD" <hd@anti.spam.fr> a écrit dans le message de news:umRIx1pNFHA.3356@TK2MSFTNGP12.phx.gbl...
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment
obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb"
Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE
Fournisseurs.code = ' " & moncode & " ' "
Set DB = DBEngine.Workspaces(0).OpenDatabase(BD)
Set Rst = DB.OpenRecordset(Requete)
Rst.MoveLast: Rst.MoveFirst
MonFournisseur = Rst.GetRows(Rst.RecordCount)
Rst.Close
DB.Close
Set Rst = Nothing: Set DB = Nothing
-- Pierre CFI MVP Microsoft Access Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer Access http://users.skynet.be/mpfa/ Excel http://www.excelabo.net Site perso http://access.cfi.free.fr "HD" a écrit dans le message de news:
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb" Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE Fournisseurs.code = ' " & moncode & " ' " Set DB = DBEngine.Workspaces(0).OpenDatabase(BD) Set Rst = DB.OpenRecordset(Requete) Rst.MoveLast: Rst.MoveFirst MonFournisseur = Rst.GetRows(Rst.RecordCount) Rst.Close DB.Close Set Rst = Nothing: Set DB = Nothing
Cela ne fonctionne pas... : ((
-- @+ HD
Pierre CFI [mvp]
../.. Set Rst = DB.OpenRecordset(Requete) if not rst.eof then MonFournisseur = Rst(0)
çà gére le non trouvé
-- Pierre CFI MVP Microsoft Access Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer Access http://users.skynet.be/mpfa/ Excel http://www.excelabo.net Site perso http://access.cfi.free.fr "HD" a écrit dans le message de news:
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb" Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE Fournisseurs.code = ' " & moncode & " ' " Set DB = DBEngine.Workspaces(0).OpenDatabase(BD) Set Rst = DB.OpenRecordset(Requete) Rst.MoveLast: Rst.MoveFirst MonFournisseur = Rst.GetRows(Rst.RecordCount) Rst.Close DB.Close Set Rst = Nothing: Set DB = Nothing
Cela ne fonctionne pas... : ((
-- @+ HD
../..
Set Rst = DB.OpenRecordset(Requete)
if not rst.eof then MonFournisseur = Rst(0)
çà gére le non trouvé
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"HD" <hd@anti.spam.fr> a écrit dans le message de news:umRIx1pNFHA.3356@TK2MSFTNGP12.phx.gbl...
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment
obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb"
Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE
Fournisseurs.code = ' " & moncode & " ' "
Set DB = DBEngine.Workspaces(0).OpenDatabase(BD)
Set Rst = DB.OpenRecordset(Requete)
Rst.MoveLast: Rst.MoveFirst
MonFournisseur = Rst.GetRows(Rst.RecordCount)
Rst.Close
DB.Close
Set Rst = Nothing: Set DB = Nothing
../.. Set Rst = DB.OpenRecordset(Requete) if not rst.eof then MonFournisseur = Rst(0)
çà gére le non trouvé
-- Pierre CFI MVP Microsoft Access Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer Access http://users.skynet.be/mpfa/ Excel http://www.excelabo.net Site perso http://access.cfi.free.fr "HD" a écrit dans le message de news:
Merci j'ai utilisé DAO et cela marche très bien... Par contre comment obtenir une seule donnée ? Par exemple :
BD = ThisWorkbook.Path & "Comptoir.mdb" Requete = "SELECT Fournisseurs.Société FROM Fournisseurs WHERE Fournisseurs.code = ' " & moncode & " ' " Set DB = DBEngine.Workspaces(0).OpenDatabase(BD) Set Rst = DB.OpenRecordset(Requete) Rst.MoveLast: Rst.MoveFirst MonFournisseur = Rst.GetRows(Rst.RecordCount) Rst.Close DB.Close Set Rst = Nothing: Set DB = Nothing