OVH Cloud OVH Cloud

Suite QUASIMODO

14 réponses
Avatar
JCM
Bonjour

je reviens sur ma précédente question sur le transfert de données d'un
classeur Excel dans Access

J'ai fait et refait le classeur excell et la table access
le chemin est indiqué par le CommonDialog

et j'ai toujours le message :

la méthode 'execute' de l'objet '_connection' a échoué

sur la ligne

Set objRsExcel = objConExcel.Execute("select * from LAZONE order by ZONE")

Le classeur Excell est LAZONE et la feuille LAZONE
Pouvez-vous me dire pourquoi, je n'arrive pas a me sortir de cette galere

Merci pour votre aide
Cordialement
JCM

10 réponses

1 2
Avatar
JCM
Bonjour

Je veux transférer les données d'Excell à Access, voici le code complet

Dim objRsExcel As ADODB.Recordset
Dim objRsAccess As ADODB.Recordset
Dim objConAcces As ADODB.Connection

Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
'objRsAccess.Source = "personnes"
objRsAccess.Source = "J17A203"
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Dim Squery As String
Squery = "select * from LAZONE order by zone"
Debug.Print Squery

Set objRsExcel = objConExcel.Execute("select * from LAZONE order by
ZONE")
If Not objRsExcel Is Nothing Then
If Not objRsExcel.BOF And Not objRsExcel.EOF Then
Do While Not objRsExcel.EOF
With objRsAccess
.AddNew
.Fields.Item("zone").Value objRsExcel.Fields.Item("zone").Value
.Fields.Item("dep").Value = objRsExcel.Fields.Item("dep").Value
.Fields.Item("AR").Value = objRsExcel.Fields.Item("AR").Value
.Fields.Item("CTN").Value = objRsExcel.Fields.Item("CTN").Value
.Fields.Item("Ville").Value objRsExcel.Fields.Item("Ville").Value
.Fields.Item("HAB90").Value objRsExcel.Fields.Item("HAB90").Value
.Fields.Item("PROG").Value objRsExcel.Fields.Item("PROG").Value
.Fields.Item("HAB99").Value objRsExcel.Fields.Item("HAB99").Value
.Fields.Item("FOYER").Value objRsExcel.Fields.Item("FOYER").Value
.Fields.Item("RESONC").Value objRsExcel.Fields.Item("RESONC").Value
.Fields.Item("SUPERFICIE").Value objRsExcel.Fields.Item("SUPERFICIE").Value
.Fields.Item("PERMEN").Value objRsExcel.Fields.Item("PERMEN").Value
.Fields.Item("HABM2").Value objRsExcel.Fields.Item("HABM2").Value
.Fields.Item("UU99").Value objRsExcel.Fields.Item("UU99").Value
.Fields.Item("CODE_INSEE").Value objRsExcel.Fields.Item("CODE_INSEE").Value
.Fields.Item("REVEURO").Value objRsExcel.Fields.Item("REVEURO").Value
.Update
objRsExcel.MoveNext
End With
Loop
End If
End If
objRsExcel.Close
objRsAccess.Close
Set objRsExcel = Nothing
Set objRsAccess = Nothing
objConAcces.Close
Set objConAcces = Nothing
objConExcel.Close
Set objConExcel = Nothing

Merci pour ta réponse
cordialement
JCM
"Gloops" a écrit dans le message de
news:419ca8e7$0$24229$
Bonjour,

Il existe deux catégories (au moins) de requêtes SQL :
- les requêtes de sélection, qui retournent des enregistrements,
- les requêtes d'exécution, qui exécutent une tâche, comme créer ou
supprimer des enregistrements.

Que t'attends-tu à obtenir comme résultat en disant [Execute("select] ?

L'objet objConExcel n'a-t-il pas une méthode OpenRecordSet ?
Dans ce cas ça marchera beaucoup mieux avec.
__________________________________
JCM a écrit, le 18/11/2004 13:34 :

> Bonjour
>
> je reviens sur ma précédente question sur le transfert de données d'un
> classeur Excel dans Access
>
> J'ai fait et refait le classeur excell et la table access
> le chemin est indiqué par le CommonDialog
>
> et j'ai toujours le message :
>
> la méthode 'execute' de l'objet '_connection' a échoué
>
> sur la ligne
>
> Set objRsExcel = objConExcel.Execute("select * from LAZONE order by


ZONE")
>
> Le classeur Excell est LAZONE et la feuille LAZONE
> Pouvez-vous me dire pourquoi, je n'arrive pas a me sortir de cette


galere
>
> Merci pour votre aide
> Cordialement
> JCM



Avatar
Gloops
Bonjour,

Il existe deux catégories (au moins) de requêtes SQL :
- les requêtes de sélection, qui retournent des enregistrements,
- les requêtes d'exécution, qui exécutent une tâche, comme créer ou
supprimer des enregistrements.

Que t'attends-tu à obtenir comme résultat en disant [Execute("select] ?

L'objet objConExcel n'a-t-il pas une méthode OpenRecordSet ?
Dans ce cas ça marchera beaucoup mieux avec.
__________________________________
JCM a écrit, le 18/11/2004 13:34 :

Bonjour

je reviens sur ma précédente question sur le transfert de données d'un
classeur Excel dans Access

J'ai fait et refait le classeur excell et la table access
le chemin est indiqué par le CommonDialog

et j'ai toujours le message :

la méthode 'execute' de l'objet '_connection' a échoué

sur la ligne

Set objRsExcel = objConExcel.Execute("select * from LAZONE order by ZONE")

Le classeur Excell est LAZONE et la feuille LAZONE
Pouvez-vous me dire pourquoi, je n'arrive pas a me sortir de cette galere

Merci pour votre aide
Cordialement
JCM


Avatar
Gloops
A vrai dire la suite du code n'aide pas vraiment pour corriger.

On ne peut pas "exécuter" une requête de connexion, on l'ouvre.
Avatar
Gloops
A vrai dire la suite du code n'aide pas vraiment pour corriger.

On ne peut pas "exécuter" une requête de sélection, on l'ouvre.


(ignorer la réponse précédente si mon annulation n'a pas été prise en
compte, il y avait un mot erroné).
Avatar
JCM
Re Bonjour

Alors voici la totalité du code :

Dim tbl As ADOX.Table

Dim col As ADOX.Column

Dim cat As ADOX.Catalog

Dim key As ADOX.key

Dim strFileNameExcel As String

Dim strFileNameAccess As String



'------------------------------------------------------------

'Ouverture du fichier Excel.

'------------------------------------------------------------

'Selection du fichier.

CmdLgMain.DefaultExt = "*.xls"

CmdLgMain.DialogTitle = "Open MS Excel file"

CmdLgMain.Filter = "MS Excel *.Xls|*.xls"

CmdLgMain.flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist

'CmdLgMain.ShowSave

CmdLgMain.ShowOpen

Me.MousePointer = vbHourglass

strFileNameExcel = CmdLgMain.fileName



'------------------------------------------------------------

'Ouverture du fichier Access.

'------------------------------------------------------------

'Selection du fichier.

CmdLgMain.DefaultExt = "*.mdb"

CmdLgMain.DialogTitle = "Open MS Access File"

CmdLgMain.Filter = "MS Access *.Mdb|*.mdb"

CmdLgMain.flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist

CmdLgMain.fileName = ""

'CmdLgMain.ShowSave

CmdLgMain.ShowOpen

strFileNameAccess = CmdLgMain.fileName

Me.MousePointer = vbHourglass



'-----------------------------------------------------------------------

'Exportation des données du fichier Excel vers la base de donnée Access.

'-----------------------------------------------------------------------

Dim objRsExcel As ADODB.Recordset

Dim objRsAccess As ADODB.Recordset

Dim objConAcces As ADODB.Connection

Dim objConExcel As ADODB.Connection



Set objConExcel = New ADODB.Connection

Set objConAcces = New ADODB.Connection

With objConExcel

.Provider = "Microsoft.Jet.OLEDB.4.0"

.Properties("Extended Properties").Value = "Excel 8.0"

.Open strFileNameExcel

End With

With objConAcces

.Provider = "Microsoft.Jet.OLEDB.4.0"

.Properties("Data Source").Value = strFileNameAccess

.Open

End With

Set objRsAccess = New ADODB.Recordset

objRsAccess.CursorLocation = adUseClient

objRsAccess.CursorType = adOpenKeyset

'objRsAccess.Source = "personnes"

objRsAccess.Source = "J17A203"

objRsAccess.LockType = adLockOptimistic

Set objRsAccess.ActiveConnection = objConAcces

objRsAccess.Open

Dim Squery As String

Squery = "select * from LAZONE order by zone"

Debug.Print Squery



Set objRsExcel = objConExcel.Execute("select * from LAZONE order by
ZONE")

If Not objRsExcel Is Nothing Then

If Not objRsExcel.BOF And Not objRsExcel.EOF Then

Do While Not objRsExcel.EOF

With objRsAccess

.AddNew

.Fields.Item("zone").Value objRsExcel.Fields.Item("zone").Value

.Fields.Item("dep").Value = objRsExcel.Fields.Item("dep").Value

.Fields.Item("AR").Value = objRsExcel.Fields.Item("AR").Value

.Fields.Item("CTN").Value = objRsExcel.Fields.Item("CTN").Value

.Fields.Item("Ville").Value objRsExcel.Fields.Item("Ville").Value

.Fields.Item("HAB90").Value objRsExcel.Fields.Item("HAB90").Value

.Fields.Item("PROG").Value objRsExcel.Fields.Item("PROG").Value

.Fields.Item("HAB99").Value objRsExcel.Fields.Item("HAB99").Value

.Fields.Item("FOYER").Value objRsExcel.Fields.Item("FOYER").Value

.Fields.Item("RESONC").Value objRsExcel.Fields.Item("RESONC").Value

.Fields.Item("SUPERFICIE").Value objRsExcel.Fields.Item("SUPERFICIE").Value

.Fields.Item("PERMEN").Value objRsExcel.Fields.Item("PERMEN").Value

.Fields.Item("HABM2").Value objRsExcel.Fields.Item("HABM2").Value

.Fields.Item("UU99").Value objRsExcel.Fields.Item("UU99").Value

.Fields.Item("CODE_INSEE").Value objRsExcel.Fields.Item("CODE_INSEE").Value

.Fields.Item("REVEURO").Value objRsExcel.Fields.Item("REVEURO").Value

.Update

objRsExcel.MoveNext

End With

Loop

End If

End If

objRsExcel.Close

objRsAccess.Close

Set objRsExcel = Nothing

Set objRsAccess = Nothing

objConAcces.Close

Set objConAcces = Nothing

objConExcel.Close

Set objConExcel = Nothing



Cordialement

JCM



"Gloops" a écrit dans le message de
news:419cb1cb$0$1306$
A vrai dire la suite du code n'aide pas vraiment pour corriger.

On ne peut pas "exécuter" une requête de sélection, on l'ouvre.


(ignorer la réponse précédente si mon annulation n'a pas été prise en
compte, il y avait un mot erroné).



Avatar
Quasimodo
JCM formulated the question :
Bonjour

je reviens sur ma précédente question sur le transfert de données d'un
classeur Excel dans Access

J'ai fait et refait le classeur excell et la table access
le chemin est indiqué par le CommonDialog

et j'ai toujours le message :

la méthode 'execute' de l'objet '_connection' a échoué

sur la ligne

Set objRsExcel = objConExcel.Execute("select * from LAZONE order by ZONE")

Le classeur Excell est LAZONE et la feuille LAZONE
Pouvez-vous me dire pourquoi, je n'arrive pas a me sortir de cette galere

Merci pour votre aide
Cordialement
JCM



bonsoir,
Avez-vous testé en changent le nom de la feuille par un autre nom et en
plus en minuscule?
Testez cela et dit moi ce que cela donne.
@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
Gloops
Ah mais on dirait que tu as la tête dure, toi.
Je te dis qu'il y en a trop, et tu en ajoutes encore.

Elle ne te plaisait pas, ma première réponse ?
Avatar
Gloops
Bonsoir,

Mais on peut vraiment "exécuter" une requête de sélection ?
C'est spécifique à Excel dans ce cas ...
________________________________________
Quasimodo a écrit, le 18/11/2004 18:50 :

bonsoir,
Avez-vous testé en changent le nom de la feuille par un autre nom et en
plus en minuscule?
Testez cela et dit moi ce que cela donne.
@+Quaz



Avatar
Quasimodo
Gloops was thinking very hard :
Bonsoir,

Mais on peut vraiment "exécuter" une requête de sélection ?
C'est spécifique à Excel dans ce cas ...
________________________________________
Quasimodo a écrit, le 18/11/2004 18:50 :

bonsoir,
Avez-vous testé en changent le nom de la feuille par un autre nom et en
plus en minuscule?
Testez cela et dit moi ce que cela donne.
@+Quaz






re

soir,
non, absolument pas.
Vous devez spécifier le type de connection et ou le driver suivant la
méthode d'ouverture de l'obet connection.
Ensuite vous définissez le nom, plus le path vers le fichier et pour
terminer vous indiquez le nom de la feuille pour excel, le nom du
fichier (je pense sans extension) pour un dbf, txt (delimited), etc ..
et c'est caisse vous pouvez faire un select, insert update, etc

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
JCM
Bonjour

Oui j'ai testé en changeant le nom de la feuille, en le mettant en minuscule
et en majuscules et

et j'ai toujours le message :

la méthode 'execute' de l'objet '_connection' a échoué

sur la ligne

Set objRsExcel = objConExcel.Execute("select * from LAZONE order by ZONE")

Merci pour votre aide
cordialement
JCM

"Quasimodo" a écrit dans le message de
news:
JCM formulated the question :
> Bonjour
>
> je reviens sur ma précédente question sur le transfert de données


d'un
> classeur Excel dans Access
>
> J'ai fait et refait le classeur excell et la table access
> le chemin est indiqué par le CommonDialog
>
> et j'ai toujours le message :
>
> la méthode 'execute' de l'objet '_connection' a échoué
>
> sur la ligne
>
> Set objRsExcel = objConExcel.Execute("select * from LAZONE order by


ZONE")
>
> Le classeur Excell est LAZONE et la feuille LAZONE
> Pouvez-vous me dire pourquoi, je n'arrive pas a me sortir de cette


galere
>
> Merci pour votre aide
> Cordialement
> JCM

bonsoir,
Avez-vous testé en changent le nom de la feuille par un autre nom et en
plus en minuscule?
Testez cela et dit moi ce que cela donne.
@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com



1 2