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

Connection ADODB

7 réponses
Avatar
divers2.lascars
Bonjour,
Je r=E9it=E8re ma question en esp=E9rant que quelqu'un pourra y r=E9pondre.
J'ai cr=E9=E9 une macro qui me permet de modifier des donn=E9es dans un
fichier excel sans l'ouvrir =E0 partir d'un autre fichier excel. Cette
macro fonctionnait correctement jusqu'=E0 ce qu'on installe la version
2007 =E0 mon travail. La macro s'arr=EAte =E0 cet endroit en me disant "La
table externe n'est pas dans le format attendu" :

Sub SetExternalDatas(DestFile As String, _
DestFeuille As String, _
DestCellAdr As String, _
DataToWrite As Variant)
Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset
Dim RangeDest


'+++++D=E9but du bug
Set oConn =3D New ADODB.Connection
oConn.Open "Provider=3DMicrosoft.Jet.OLEDB.4.0;" & _
"Data Source=3D" & DestFile & ";" & _
"Extended Properties=3D""Excel 8.0;HDR=3DNo;"";"
'+++++Fin du bug


Set oCmd =3D New ADODB.Command
oCmd.ActiveConnection =3D oConn


RangeDest =3D DestCellAdr & ":" & DestCellAdr
oCmd.CommandText =3D "SELECT * from `" & DestFeuille & "$" &
RangeDest & "`"


Set oRS =3D New ADODB.Recordset
oRS.Open oCmd, , adOpenKeyset, adLockOptimistic
oRS(0).Value =3D DataToWrite
oRS.Update


oConn.Close
Set oConn =3D Nothing
Set oCmd =3D Nothing
Set oRS =3D Nothing


End Sub


Auriez vous une id=E9e du probl=E8me? Merci d'avance

7 réponses

Avatar
papou
Bonjour
A priori il s'agirait de la partie
"Extended Properties=""Excel 8.0
Où je pense qu'il te faut modifier avec le numéro de version correspondant à
Excel 2007, soit Excel 12.0.

Cordialement
Pascal

a écrit dans le message de news:

Bonjour,
Je réitère ma question en espérant que quelqu'un pourra y répondre.
J'ai créé une macro qui me permet de modifier des données dans un
fichier excel sans l'ouvrir à partir d'un autre fichier excel. Cette
macro fonctionnait correctement jusqu'à ce qu'on installe la version
2007 à mon travail. La macro s'arrête à cet endroit en me disant "La
table externe n'est pas dans le format attendu" :

Sub SetExternalDatas(DestFile As String, _
DestFeuille As String, _
DestCellAdr As String, _
DataToWrite As Variant)
Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset
Dim RangeDest


'+++++Début du bug
Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DestFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No;"";"
'+++++Fin du bug


Set oCmd = New ADODB.Command
oCmd.ActiveConnection = oConn


RangeDest = DestCellAdr & ":" & DestCellAdr
oCmd.CommandText = "SELECT * from `" & DestFeuille & "$" &
RangeDest & "`"


Set oRS = New ADODB.Recordset
oRS.Open oCmd, , adOpenKeyset, adLockOptimistic
oRS(0).Value = DataToWrite
oRS.Update


oConn.Close
Set oConn = Nothing
Set oCmd = Nothing
Set oRS = Nothing


End Sub


Auriez vous une idée du problème? Merci d'avance
Avatar
Corto
Bonjour
Il me semble qu'Excel 8.0 correspond à Excel 97.
chez moi j'ai Excel 2003 qui correspond déjà à Excel 11.0, avec 2007 tu
devrais essayer Excel 12.0

jette aussi un oeil sur ce site
http://cedric-delnibbio-sql.blogspot.com/2007/03/comment-connecter-ssis-un-classeur.html
Il s'agit d'un pb avec SQL server mais qui ressemble beaucoup au tien.

Corto

Bonjour,
Je réitère ma question en espérant que quelqu'un pourra y répondre.
J'ai créé une macro qui me permet de modifier des données dans un
fichier excel sans l'ouvrir à partir d'un autre fichier excel. Cette
macro fonctionnait correctement jusqu'à ce qu'on installe la version
2007 à mon travail. La macro s'arrête à cet endroit en me disant "La
table externe n'est pas dans le format attendu" :

Sub SetExternalDatas(DestFile As String, _
DestFeuille As String, _
DestCellAdr As String, _
DataToWrite As Variant)
Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset
Dim RangeDest


'+++++Début du bug
Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DestFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No;"";"
'+++++Fin du bug


Set oCmd = New ADODB.Command
oCmd.ActiveConnection = oConn


RangeDest = DestCellAdr & ":" & DestCellAdr
oCmd.CommandText = "SELECT * from `" & DestFeuille & "$" &
RangeDest & "`"


Set oRS = New ADODB.Recordset
oRS.Open oCmd, , adOpenKeyset, adLockOptimistic
oRS(0).Value = DataToWrite
oRS.Update


oConn.Close
Set oConn = Nothing
Set oCmd = Nothing
Set oRS = Nothing


End Sub


Auriez vous une idée du problème? Merci d'avance



Avatar
divers2.lascars
Merci pour vos réponses. En fait j'ai déja essayé de modifier cette
ligne:
Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & _
"Data Source=" & DestFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No;"";"

J'ai donc remplacé le 4.0 et le 8.0 par 12.0. Mais ca ne fonctionne
pas.
Avatar
papou
Bonjour
La version du moteur Microsft Jet ne change pas, c'est uniquement la version
d'Excel qu'il faut changer dans ton code.
Mais je ne suis pas en mesure de tester, je n'ai pas la version Excel
2007...

Cordialement
Pascal

a écrit dans le message de news:

Merci pour vos réponses. En fait j'ai déja essayé de modifier cette
ligne:
Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & _
"Data Source=" & DestFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No;"";"

J'ai donc remplacé le 4.0 et le 8.0 par 12.0. Mais ca ne fonctionne
pas.
Avatar
divers2.lascars
On 15 mai, 14:24, "papou" <cestpasbon@çanonplus44.fr> wrote:
Bonjour
La version du moteur Microsft Jet ne change pas, c'est uniquement la vers ion
d'Excel qu'il faut changer dans ton code.
Mais je ne suis pas en mesure de tester, je n'ai pas la version Excel
2007...

Cordialement
Pascal

Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & _

"Data Source=" & DestFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No;"";"

J'ai donc remplacé le 4.0 et le 8.0 par 12.0. Mais ca ne fonctionne
pas.


J'ai également remplacé simplement le 8.0 par le 12.0, il me donne
comme erreur "Pilote ISAM introuvable". Je précise également que pour
que le fichier puisse être ouvert par des versions antérieures, j'ai
gardé l'extension .xlt (donc je suppose que l'extended properties doit
être Excel 8.0).


Avatar
Corto
Bonjour,
trouvé sur
http://www.microsoft.com/france/msdn/donnees/articles/migration_DAO_ADO.mspx#wpmigratingopening
Avec ADO, le type de base de données est spécifié dans la propriété
Extended Properties de l'objet connection. Le tableau suivant donne la
liste des chaînes de caractères correspondant à chaque ISAM à ouvrir.
Base de données |Chaîne
dBASE III |dBASE III;
dBASE IV |dBASE IV;
dBASE 5 |dBASE 5.0;
Paradox 3.x |Paradox 3.x;
Paradox 4.x |Paradox 4.x;
Paradox 5.x |Paradox 5.x;
Excel 3.0 |Excel 3.0;
Excel 4.0 |Excel 4.0;
Excel 5.0/Excel 95 |Excel 5.0;
Excel 97 |Excel 97;
Excel 2000 |Excel 8.0;
HTML Import |HTML Import;
HTML Export |HTML Export;
Text |Text;
ODBC |ODBC;
|DATABASEºse de données;
|UID=utilisateur;
|PWD=mot de passe;
|DSN=nom_source_données;




On 15 mai, 14:24, "papou" <cestpasbon@çanonplus44.fr> wrote:
Bonjour La version du moteur Microsft Jet ne change pas, c'est
uniquement la version d'Excel qu'il faut changer dans ton code.
Mais je ne suis pas en mesure de tester, je n'ai pas la version
Excel 2007...

Cordialement Pascal

Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & _ "Data Source="

& DestFile & ";" & _ "Extended Properties=""Excel 12.0;HDR=No;"";"

J'ai donc remplacé le 4.0 et le 8.0 par 12.0. Mais ca ne fonctionne
pas.


J'ai également remplacé simplement le 8.0 par le 12.0, il me donne
comme erreur "Pilote ISAM introuvable". Je précise également que pour
que le fichier puisse être ouvert par des versions antérieures, j'ai
gardé l'extension .xlt (donc je suppose que l'extended properties
doit être Excel 8.0).





Avatar
divers2.lascars
On 15 mai, 15:31, Corto wrote:
Bonjour,
trouvé surhttp://www.microsoft.com/france/msdn/donnees/articles/migrati on_DAO_A...
Avec ADO, le type de base de données est spécifié dans la proprié té
Extended Properties de l'objet connection. Le tableau suivant donne la
liste des chaînes de caractères correspondant à chaque ISAM à ouv rir.
Base de données |Chaîne
dBASE III |dBASE III;
dBASE IV |dBASE IV;
dBASE 5 |dBASE 5.0;
Paradox 3.x |Paradox 3.x;
Paradox 4.x |Paradox 4.x;
Paradox 5.x |Paradox 5.x;
Excel 3.0 |Excel 3.0;
Excel 4.0 |Excel 4.0;
Excel 5.0/Excel 95 |Excel 5.0;
Excel 97 |Excel 97;
Excel 2000 |Excel 8.0;
HTML Import |HTML Import;
HTML Export |HTML Export;
Text |Text;
ODBC |ODBC;
|DATABASEºse de données;
|UID=utilisateur;
|PWD=mot de passe;
|DSN=nom_source_données;




On 15 mai, 14:24, "papou" <cestpasbon@çanonplus44.fr> wrote:
Bonjour La version du moteur Microsft Jet ne change pas, c'est
uniquement la version d'Excel qu'il faut changer dans ton code.
Mais je ne suis pas en mesure de tester, je n'ai pas la version
Excel 2007...

Cordialement Pascal

Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & _ "Data Source="

& DestFile & ";" & _ "Extended Properties=""Excel 12.0;HDR=No;"";"

J'ai donc remplacé le 4.0 et le 8.0 par 12.0. Mais ca ne fonctionne
pas.


J'ai également remplacé simplement le 8.0 par le 12.0, il me donne
comme erreur "Pilote ISAM introuvable". Je précise également que po ur
que le fichier puisse être ouvert par des versions antérieures, j' ai
gardé l'extension .xlt (donc je suppose que l'extended properties
doit être Excel 8.0).- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Je ne vois pas trop comment je peux exploiter ses informations.