Requête SQL vers un fichier excel

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
rénald
Le #6813851
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" 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


rénald
Le #6813841
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" 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


Gilles LAURENT [MVP]
Le #6815961
"rénald" 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
rénald
Le #7002261
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" 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





Gilles LAURENT [MVP]
Le #7005231
"rénald" 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
rénald
Le #7007631
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" 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





Gilles LAURENT [MVP]
Le #7007691
"rénald" 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
rénald
Le #7008991
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" 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







Gilles LAURENT [MVP]
Le #7021771
&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 />
Publicité
Poster une réponse
Anonyme