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

Ecrire dans excel avec ADO depuis Access : Erreur mise à jour impossible

3 réponses
Avatar
Rv
Bonjour,


J'essaye d'utiliser ADO pour lire/écrire des données dans un claseur Excel
fermé.
Au niveau de la lecture il n'y a pas de soucis. Par contre lorsque j'essaye
d'écrire j'obtiens le message suivant : "Mise à jour impossible : La base de
données ou l'objet est en lecture seule".
Le fichier Excel n'est pas en lecture seule et les droits NTFS permettent
l'accès total au groupe "tout le monde".
Le même test en VB6 fonctionne sans problèmes.
Je ne cherche pas une autre solution. Je voudrais simplement comprendre le
problème.
Ci dessous le code utilisé et la configuration de mon poste de travail:

' Le classeur Excel contient une plage nommée : "p"
Sub ecrireExcel()
Dim objRs As New ADODB.Recordset
Dim objConn As New ADODB.Connection
Dim strRequete As String


strRequete = "select * from p"
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\test.xls;Extended Properties=excel 8.0;Persist Security
Info=False"
objConn.Open

objRs.Open strRequete, objConn, adOpenStatic, adLockOptimistic

objRs.AddNew
objRs(0) = 4
objRs.Update
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
End Sub

Configuration : WinXP, Office 2003, Réference ADO 2.7.

Merci d'avance pour vos réponses.


Rv

3 réponses

Avatar
Sylvain Lafontaine
Je sais que depuis environ deux ans (WinXP SP2?), les tables liées ODBC dans
Access vers Excel sont en lecture seulement à cause d'un problème de brevet.
Peut-être que votre problème vient de là. Si oui, vous allez devoir
utiliser autre chose que le pilote OLEDB JET pour manipuler/modifier vos
classeurs Excel.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Rv" wrote in message
news:
Bonjour,


J'essaye d'utiliser ADO pour lire/écrire des données dans un claseur Excel
fermé.
Au niveau de la lecture il n'y a pas de soucis. Par contre lorsque
j'essaye d'écrire j'obtiens le message suivant : "Mise à jour impossible :
La base de données ou l'objet est en lecture seule".
Le fichier Excel n'est pas en lecture seule et les droits NTFS permettent
l'accès total au groupe "tout le monde".
Le même test en VB6 fonctionne sans problèmes.
Je ne cherche pas une autre solution. Je voudrais simplement comprendre le
problème.
Ci dessous le code utilisé et la configuration de mon poste de travail:

' Le classeur Excel contient une plage nommée : "p"
Sub ecrireExcel()
Dim objRs As New ADODB.Recordset
Dim objConn As New ADODB.Connection
Dim strRequete As String


strRequete = "select * from p"
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:test.xls;Extended Properties=excel 8.0;Persist Security
Infoúlse"
objConn.Open

objRs.Open strRequete, objConn, adOpenStatic, adLockOptimistic

objRs.AddNew
objRs(0) = 4
objRs.Update
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
End Sub

Configuration : WinXP, Office 2003, Réference ADO 2.7.

Merci d'avance pour vos réponses.


Rv



Avatar
Rv
Bonjour et merci Sylvain.
Aurais-tu des références à propos de cette limitation afin que je fouille
cette piste?

A+

Rv

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: egTD$
Je sais que depuis environ deux ans (WinXP SP2?), les tables liées ODBC
dans Access vers Excel sont en lecture seulement à cause d'un problème de
brevet. Peut-être que votre problème vient de là. Si oui, vous allez
devoir utiliser autre chose que le pilote OLEDB JET pour
manipuler/modifier vos classeurs Excel.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Rv" wrote in message
news:
Bonjour,


J'essaye d'utiliser ADO pour lire/écrire des données dans un claseur
Excel fermé.
Au niveau de la lecture il n'y a pas de soucis. Par contre lorsque
j'essaye d'écrire j'obtiens le message suivant : "Mise à jour impossible
: La base de données ou l'objet est en lecture seule".
Le fichier Excel n'est pas en lecture seule et les droits NTFS permettent
l'accès total au groupe "tout le monde".
Le même test en VB6 fonctionne sans problèmes.
Je ne cherche pas une autre solution. Je voudrais simplement comprendre
le problème.
Ci dessous le code utilisé et la configuration de mon poste de travail:

' Le classeur Excel contient une plage nommée : "p"
Sub ecrireExcel()
Dim objRs As New ADODB.Recordset
Dim objConn As New ADODB.Connection
Dim strRequete As String


strRequete = "select * from p"
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:test.xls;Extended Properties=excel 8.0;Persist Security
Infoúlse"
objConn.Open

objRs.Open strRequete, objConn, adOpenStatic, adLockOptimistic

objRs.AddNew
objRs(0) = 4
objRs.Update
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
End Sub

Configuration : WinXP, Office 2003, Réference ADO 2.7.

Merci d'avance pour vos réponses.


Rv







Avatar
Rv
Merci Sylvain. Le problème vient bien de là:
http://support.microsoft.com/kb/904953/fr

A+

Rv

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: egTD$
Je sais que depuis environ deux ans (WinXP SP2?), les tables liées ODBC
dans Access vers Excel sont en lecture seulement à cause d'un problème de
brevet. Peut-être que votre problème vient de là. Si oui, vous allez
devoir utiliser autre chose que le pilote OLEDB JET pour
manipuler/modifier vos classeurs Excel.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Rv" wrote in message
news:
Bonjour,


J'essaye d'utiliser ADO pour lire/écrire des données dans un claseur
Excel fermé.
Au niveau de la lecture il n'y a pas de soucis. Par contre lorsque
j'essaye d'écrire j'obtiens le message suivant : "Mise à jour impossible
: La base de données ou l'objet est en lecture seule".
Le fichier Excel n'est pas en lecture seule et les droits NTFS permettent
l'accès total au groupe "tout le monde".
Le même test en VB6 fonctionne sans problèmes.
Je ne cherche pas une autre solution. Je voudrais simplement comprendre
le problème.
Ci dessous le code utilisé et la configuration de mon poste de travail:

' Le classeur Excel contient une plage nommée : "p"
Sub ecrireExcel()
Dim objRs As New ADODB.Recordset
Dim objConn As New ADODB.Connection
Dim strRequete As String


strRequete = "select * from p"
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:test.xls;Extended Properties=excel 8.0;Persist Security
Infoúlse"
objConn.Open

objRs.Open strRequete, objConn, adOpenStatic, adLockOptimistic

objRs.AddNew
objRs(0) = 4
objRs.Update
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
End Sub

Configuration : WinXP, Office 2003, Réference ADO 2.7.

Merci d'avance pour vos réponses.


Rv