OVH Cloud OVH Cloud

Excel et SQL

4 réponses
Avatar
SuperGolgoth
Bonjour,
J'aimerai savoir comment alimenter une dropdown avec le resultat d'une
requete SQL ..?
Je suppose qu'il faut utiliser le code DropDown, mais comment ?
Par exemple ma requete serait :
select Zone2 from table where Zone1 = 'User'
Merci

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Life is simple :
Eat, sleep, and surf the net
~~~~~~~~~~~~~~~~~~~~~~~~~~~

4 réponses

Avatar
michdenis
Bonjour,

Tu ne donnes pas beaucoup d'informations quant à la façon utilisée pour créer ton recordset !!!!!

Rst = ton recordset
Avec DAO
'---------------
Do Until rst.EOF
ComboBox1.AddItem rst(0)
rst.MoveNext
Loop
'---------------
Il y a aussi ceci :
ComboBox1.List = Application.Transpose(Rst.GetRows(Rst.RecordCount))


Avec ADO
ComboBox1.List = Application.Transpose(Rst.GetRows)


Salutations!





"SuperGolgoth" a écrit dans le message de news:
Bonjour,
J'aimerai savoir comment alimenter une dropdown avec le resultat d'une
requete SQL ..?
Je suppose qu'il faut utiliser le code DropDown, mais comment ?
Par exemple ma requete serait :
select Zone2 from table where Zone1 = 'User'
Merci

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Life is simple :
Eat, sleep, and surf the net
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avatar
SuperGolgoth
michdenis vient de nous annoncer :
Bonjour,

Tu ne donnes pas beaucoup d'informations quant à la façon utilisée pour créer
ton recordset !!!!!

Voici un exemple de requete :

SQLString = "SELECT DISTINCT "
SQLString = SQLString + " USR.UsnName AS 'ITC' "
SQLString = SQLString + "FROM "
SQLString = SQLString + " USERNOV USR "
SQLString = SQLString + "WHERE "
SQLString = SQLString + " USR.UsnStatus = 'YES' "

With ActiveSheet.QueryTables.Add _
(Connection:="ODBC;DSN=NOVACIAL;UID=sa;PWD=;", _
Destination:=Range("A5"), Sql:=SQLString)
.Refresh (False)
End With

Et le resultat de cette requete, j'aimerai l'avoir dans ma dropdown
A priori, je vais devoir passer par ADO, que je ne connais pas ...
Merci

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Life is simple :
Eat, sleep, and surf the net
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
michdenis
Bonjour SuperGolgoth,

L'exemple suivant est contruite à partir d'une base de donnée Access. La chaine de connection dans ton cas sera différente car ta
base de données n'est pas acccess....

Avec ADO, tu peux utiliser cependant ton fichier DSN comme chaîne de connection. ça donnerait quelque chose comme ceci au niveau de
la syntaxe :

Con = Variable déclaré comme
DimCon As New ADODB.Connection
Con.Open "DSN=BiblioDSN"

Sinon, tu dois aller sur le site de ton fournisseur d'application que tu utilises et vérifier auprès de lui si un "pilote" existe.

À partir de ce qui précède, tu devras adapter la procédure exemple.


Cet exemple initialise un combobox avec les entrées d'un champ "Société"
de la table "fournisseurs" de la base de données Comptoir.mdb sur le CD
d'installation.

Les données de ton combobox ne contiendront pas de doublons et elles
seront classées par ordre alphabétique.

Tu dois ajouter à ton projet excel la référence suivante :

"Microsoft activex data objects 2.0 librairy"

'.--------------------------------
Sub InitialerUnCombobox()

Dim C As Integer
Dim cnt As New ADODB.Connection, Rst As New ADODB.Recordset
Dim A As Variant, BaseAccess, Requete1 As String

'Chemin et Base de données. Comptoir.mdb fait parti
'des bases de données exemple que l'on retrouve
'sur le CD d'installation

BaseAccess = ThisWorkbook.Path & "" & "Comptoir.mdb"

requete1 = "SELECT Fournisseurs.Société " & _
"FROM Fournisseurs " & _
"GROUP BY Fournisseurs.Société;"

'Création d'une connection avec la base de données.
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & BaseAccess

'Ouverture du recordset (exécution de la requête)
Rst.Open requete1, cnt, adOpenKeyset

A = Rst.GetRows
UserForm1.ComboBox1.List = Application.Transpose(A)

'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!



"SuperGolgoth" a écrit dans le message de news:
michdenis vient de nous annoncer :
Bonjour,

Tu ne donnes pas beaucoup d'informations quant à la façon utilisée pour créer
ton recordset !!!!!

Voici un exemple de requete :

SQLString = "SELECT DISTINCT "
SQLString = SQLString + " USR.UsnName AS 'ITC' "
SQLString = SQLString + "FROM "
SQLString = SQLString + " USERNOV USR "
SQLString = SQLString + "WHERE "
SQLString = SQLString + " USR.UsnStatus = 'YES' "

With ActiveSheet.QueryTables.Add _
(Connection:="ODBC;DSN=NOVACIAL;UID=sa;PWD=;", _
Destination:=Range("A5"), Sql:=SQLString)
.Refresh (False)
End With

Et le resultat de cette requete, j'aimerai l'avoir dans ma dropdown
A priori, je vais devoir passer par ADO, que je ne connais pas ...
Merci

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Life is simple :
Eat, sleep, and surf the net
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
SuperGolgoth
Excellent ... je vais de ce pas tester tout ca, en esperant avoir
compris ...
Quelques questions subsidiaires quand meme ...


Con = Variable déclaré comme
comme quoi ?

DimCon As New ADODB.Connection
Con.Open "DSN=BiblioDSN"

Sinon, tu dois aller sur le site de ton fournisseur d'application que tu
utilises et vérifier auprès de lui si un "pilote" existe.
Bof, c'est tout simplement SQL ... full microsoft ... alors je suppose

que ca existe

À partir de ce qui précède, tu devras adapter la procédure exemple.


Cet exemple initialise un combobox avec les entrées d'un champ "Société"
de la table "fournisseurs" de la base de données Comptoir.mdb sur le CD
d'installation.

Les données de ton combobox ne contiendront pas de doublons et elles
seront classées par ordre alphabétique.

Tu dois ajouter à ton projet excel la référence suivante :

"Microsoft activex data objects 2.0 librairy"
Alors la, je suis dubitatif ...

j'en ai plein de version de ce truc ... 2.0; 2.1; 2.5; 2.6; 2.7 et 2.8
Ne serait-il pas mieux de prendre la derniere ..?

'.--------------------------------
Sub InitialerUnCombobox()

Dim C As Integer
Dim cnt As New ADODB.Connection, Rst As New ADODB.Recordset
Dim A As Variant, BaseAccess, Requete1 As String

'Chemin et Base de données. Comptoir.mdb fait parti
'des bases de données exemple que l'on retrouve
'sur le CD d'installation

BaseAccess = ThisWorkbook.Path & "" & "Comptoir.mdb"

requete1 = "SELECT Fournisseurs.Société " & _
"FROM Fournisseurs " & _
"GROUP BY Fournisseurs.Société;"

'Création d'une connection avec la base de données.
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & BaseAccess
... Provider=ODBC;Data Source=MON_DSN ???




Merci

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Life is simple :
Eat, sleep, and surf the net
~~~~~~~~~~~~~~~~~~~~~~~~~~~