Connection ADODB

Le
divers2.lascars
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
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
papou
Le #4511951
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


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
Corto
Le #4511901
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



divers2.lascars
Le #4511801
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.
papou
Le #4511781
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


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.
divers2.lascars
Le #4511761
On 15 mai, 14:24, "papou"
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).


Corto
Le #4511611
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"
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).





divers2.lascars
Le #4511161
On 15 mai, 15:31, Corto
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"
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.




Publicité
Poster une réponse
Anonyme