Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête SQL vers un fichier excel

9 réponses
Avatar
rénald
Hello,

J'aimerais savoir si il est possible de faire une requête SQL depuis un
fichier VBS vers un fichier excel.

En gros faire une extraction SQL depuis un fichier excel.

En vbs

Merci

9 réponses

Avatar
rénald
Cool merci

Je vais créer un DSN al la place du Microsoft.Jet.OLEDB.4.0

cool encore.
Rénald

"Gilles LAURENT [MVP]" wrote:

"rénald" a écrit dans le message de
news:
| Hello,

Bonjour,

| J'aimerais savoir si il est possible de faire une requête SQL depuis
| un fichier VBS vers un fichier excel.
|
| En gros faire une extraction SQL depuis un fichier excel.
|
| En vbs
|
| Merci

Par exemple via le fournisseur Microsoft Jet :
Le classeur Excel d'exemple se trouve en pièce jointe.

--- Coupez ici : RequestXLS.vbs ---
' connexion au classeur Microsoft Excel
Set oCon=CreateObject("ADODB.Connection")
oCon.Provider="Microsoft.Jet.OLEDB.4.0"
oCon.ConnectionString= _
"Data Source=D:Testeuro.xls;" & _
"Extended Properties=Excel 8.0;"
oCon.Open

' exécution de la requête SQL et extraction des données
Set oRs=oCon.Execute("SELECT * FROM [Feuil1$]")
While Not oRs.EOF
WScript.Echo _
oRs.Fields("Date") & " " & _
oRs.Fields("Equipe1") & "-" & _
oRs.Fields("Equipe2") & VBTab & _
oRs.Fields("Score")
oRs.MoveNext
Wend
--- Coupez ici : RequestXLS.vbs ---

Vous trouverez d'autres informations ici :
http://support.microsoft.com/kb/257819/

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free


Avatar
rénald
Hello

autre petite question :

Dans le fichier xls j'ai des colonne de type :

a|b|c|d|e|f...

si j'écris une requête type :


request = inputbox("nom de la personne recherchée ?")
...
select * form 'sheet1$' where field("a") = request
...

est-ce correct ?

"Gilles LAURENT [MVP]" wrote:

"rénald" a écrit dans le message de
news:
| Hello,

Bonjour,

| J'aimerais savoir si il est possible de faire une requête SQL depuis
| un fichier VBS vers un fichier excel.
|
| En gros faire une extraction SQL depuis un fichier excel.
|
| En vbs
|
| Merci

Par exemple via le fournisseur Microsoft Jet :
Le classeur Excel d'exemple se trouve en pièce jointe.

--- Coupez ici : RequestXLS.vbs ---
' connexion au classeur Microsoft Excel
Set oCon=CreateObject("ADODB.Connection")
oCon.Provider="Microsoft.Jet.OLEDB.4.0"
oCon.ConnectionString= _
"Data Source=D:Testeuro.xls;" & _
"Extended Properties=Excel 8.0;"
oCon.Open

' exécution de la requête SQL et extraction des données
Set oRs=oCon.Execute("SELECT * FROM [Feuil1$]")
While Not oRs.EOF
WScript.Echo _
oRs.Fields("Date") & " " & _
oRs.Fields("Equipe1") & "-" & _
oRs.Fields("Equipe2") & VBTab & _
oRs.Fields("Score")
oRs.MoveNext
Wend
--- Coupez ici : RequestXLS.vbs ---

Vous trouverez d'autres informations ici :
http://support.microsoft.com/kb/257819/

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free


Avatar
Gilles LAURENT [MVP]
"rénald" a écrit dans le message de
news:
| Hello

Bonjour,

| autre petite question :
|
| Dans le fichier xls j'ai des colonne de type :
|
| a|b|c|d|e|f...
|
| si j'écris une requête type :
|
|
| request = inputbox("nom de la personne recherchée ?")
| ...
| select * form 'sheet1$' where field("a") = request
| ...
|
| est-ce correct ?

"SELECT * FROM [sheet1$] WHERE a='" & request & "'"

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
rénald
Hello,

Merci de votre réponse.

Toutefois lorsque j'essaye d'appeler un champ, rien ne se passe (s'affiche) :
...
set conn=CreateObject("ADODB.Connection")
'j'utilise un DNS excel appelé BCC
conn.connectionstring = "dsn¼C"
conn.Open

'a = une colonne dans la feuille excel
mySQL = "select * from [sheet1$] where a LIKE '%" & query &"%'"

set rc=CreateObject("ADODB.recordset")
rc.Open mySQL ,conn

on error resume next
do until rc.eof
nom= rc("a").value
MsgBox(nom)

rc.movenext

loop
...

une idée?

Merci

"Gilles LAURENT [MVP]" wrote:

"rénald" a écrit dans le message de
news:
| Hello

Bonjour,

| autre petite question :
|
| Dans le fichier xls j'ai des colonne de type :
|
| a|b|c|d|e|f...
|
| si j'écris une requête type :
|
|
| request = inputbox("nom de la personne recherchée ?")
| ...
| select * form 'sheet1$' where field("a") = request
| ...
|
| est-ce correct ?

"SELECT * FROM [sheet1$] WHERE a='" & request & "'"

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr





Avatar
Gilles LAURENT [MVP]
"rénald" a écrit dans le message de
news:
| Hello,

Bonjour,

| Merci de votre réponse.
|
| Toutefois lorsque j'essaye d'appeler un champ, rien ne se passe
| (s'affiche) : ...
| set conn=CreateObject("ADODB.Connection")
| 'j'utilise un DNS excel appelé BCC
| conn.connectionstring = "dsn¼C"
| conn.Open
|
| 'a = une colonne dans la feuille excel
| mySQL = "select * from [sheet1$] where a LIKE '%" & query &"%'"
|
| set rc=CreateObject("ADODB.recordset")
| rc.Open mySQL ,conn
|
| on error resume next
| do until rc.eof
| nom= rc("a").value
| MsgBox(nom)
|
| rc.movenext
|
| loop
| ...
|
| une idée?

Le problème ne provient pas du code joint. Avez-vous bien spécifié les
noms des colonnes dans la première ligne de votre feuille Excel
contenant les données ? Ci cela n'est pas le cas alors vos colonnes
portent par défaut les noms F1, F2, F3, ... De plus, en passant par un
DNS ODBC, la première ligne sera toujours ignorée en raison d'un bug du
driver ODBC Excel :
http://support.microsoft.com/kb/288343/en-us

Essayez donc de remplacer la référence à la colonne "a" par "F1"

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
rénald
Hello,

Il y a de l'avancement :

J'ai donc renommé les colonnes Excel. Maintenant j'arrive a extraire
uniquement la première colonne. Mais dès que je précise une autre colonne (de
la même ligne...), l'output est vide :

(cf script ci-dessous)

'name = première colonne extraction OK:
name = rc("name").value

hd = une des autres colonnes (output vide)
hd = rc("hd").value

merci


"Gilles LAURENT [MVP]" wrote:

"rénald" a écrit dans le message de
news:
| Hello,

Bonjour,

| Merci de votre réponse.
|
| Toutefois lorsque j'essaye d'appeler un champ, rien ne se passe
| (s'affiche) : ...
| set conn=CreateObject("ADODB.Connection")
| 'j'utilise un DNS excel appelé BCC
| conn.connectionstring = "dsn¼C"
| conn.Open
|
| 'a = une colonne dans la feuille excel
| mySQL = "select * from [sheet1$] where a LIKE '%" & query &"%'"
|
| set rc=CreateObject("ADODB.recordset")
| rc.Open mySQL ,conn
|
| on error resume next
| do until rc.eof
| nom= rc("a").value
| MsgBox(nom)
|
| rc.movenext
|
| loop
| ...
|
| une idée?

Le problème ne provient pas du code joint. Avez-vous bien spécifié les
noms des colonnes dans la première ligne de votre feuille Excel
contenant les données ? Ci cela n'est pas le cas alors vos colonnes
portent par défaut les noms F1, F2, F3, ... De plus, en passant par un
DNS ODBC, la première ligne sera toujours ignorée en raison d'un bug du
driver ODBC Excel :
http://support.microsoft.com/kb/288343/en-us

Essayez donc de remplacer la référence à la colonne "a" par "F1"

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr





Avatar
Gilles LAURENT [MVP]
"rénald" a écrit dans le message de
news:
| Hello,

Bonjour,

| Il y a de l'avancement :

Tant mieux :-)

| J'ai donc renommé les colonnes Excel. Maintenant j'arrive a extraire
| uniquement la première colonne. Mais dès que je précise une autre
| colonne (de la même ligne...), l'output est vide :

Il n'y a pas de raison :-( Je vous invite à me faire parvenir (via le
forum ou via messagerie) votre classeur Excel ainsi que le script
d'extraction associé.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
rénald
Hello,

A quelle adresse de messagerie puis-je vous adresser mes 2 files ?

Merci

"rénald" wrote:

Hello,

Il y a de l'avancement :

J'ai donc renommé les colonnes Excel. Maintenant j'arrive a extraire
uniquement la première colonne. Mais dès que je précise une autre colonne (de
la même ligne...), l'output est vide :

(cf script ci-dessous)

'name = première colonne extraction OK:
name = rc("name").value

hd = une des autres colonnes (output vide)
hd = rc("hd").value

merci


"Gilles LAURENT [MVP]" wrote:

"rénald" a écrit dans le message de
news:
| Hello,

Bonjour,

| Merci de votre réponse.
|
| Toutefois lorsque j'essaye d'appeler un champ, rien ne se passe
| (s'affiche) : ...
| set conn=CreateObject("ADODB.Connection")
| 'j'utilise un DNS excel appelé BCC
| conn.connectionstring = "dsn¼C"
| conn.Open
|
| 'a = une colonne dans la feuille excel
| mySQL = "select * from [sheet1$] where a LIKE '%" & query &"%'"
|
| set rc=CreateObject("ADODB.recordset")
| rc.Open mySQL ,conn
|
| on error resume next
| do until rc.eof
| nom= rc("a").value
| MsgBox(nom)
|
| rc.movenext
|
| loop
| ...
|
| une idée?

Le problème ne provient pas du code joint. Avez-vous bien spécifié les
noms des colonnes dans la première ligne de votre feuille Excel
contenant les données ? Ci cela n'est pas le cas alors vos colonnes
portent par défaut les noms F1, F2, F3, ... De plus, en passant par un
DNS ODBC, la première ligne sera toujours ignorée en raison d'un bug du
driver ODBC Excel :
http://support.microsoft.com/kb/288343/en-us

Essayez donc de remplacer la référence à la colonne "a" par "F1"

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr







Avatar
Gilles LAURENT [MVP]
&quot;r&eacute;nald&quot; &lt;&gt; a &eacute;crit dans le message de<br />
news:<br />
| Hello,<br />
<br />
Bonsoir,<br />
<br />
Script VBScript ExtractXLS.vbs d&eacute;pos&eacute; dans votre messagerie.<br />
<br />
--<br />
Gilles LAURENT<br />
MVP Windows Server - Admin Frameworks<br />
http://glsft.free.fr<br />