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

Import table access aléatoire

7 réponses
Avatar
FFO
Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:\Chemin\Fichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la macro 1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions

7 réponses

Avatar
papou
Bonjour
Juste une petite rectification :
ObjAcc.Quit
au lieu de ObjAcc.Application.Quit

Mais elle n'explique peut être pas ton erreur.

Cordialement
Pascal

"FFO" a écrit dans le message de news:

Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la macro
1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions


Avatar
JB
Bonjour,

On peut également s'attacher à une table/requête Access. La Maj est
automatique:

sqlChaine = "select * from client"
RepAppli = ActiveWorkbook.Path
ChaineConn = "ODBC;DSN=MS Access Database;DBQ=" & RepAppli &
"Access2000.mdb"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A1"), Sql:=sqlChaine).Refresh

http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip

JB

On 2 avr, 16:02, "papou" <cestpasbon@çanonplus44.fr> wrote:
Bonjour
Juste une petite rectification :
ObjAcc.Quit
au lieu de ObjAcc.Application.Quit

Mais elle n'explique peut être pas ton erreur.

Cordialement
Pascal

"FFO" a écrit dans le message de news:




Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fich ier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecor dset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouvert ure de mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la m acro
1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur dista nt
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions- Masquer le texte des messages précédent s -


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



Avatar
papou
Bonjour
Je confirme que l'utilisation d'ADO serait préférable dans ce genre de
situation.
Ceci étant peut-ête pas besoin d'ajouter une requête query mais plus
simplement une lecture des recordset pour le postionnement direct dans
Excel.
A voir ?

Cordialement
Pascal


"JB" a écrit dans le message de news:

Bonjour,

On peut également s'attacher à une table/requête Access. La Maj est
automatique:

sqlChaine = "select * from client"
RepAppli = ActiveWorkbook.Path
ChaineConn = "ODBC;DSN=MS Access Database;DBQ=" & RepAppli &
"Access2000.mdb"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A1"), Sql:=sqlChaine).Refresh

http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip

JB

On 2 avr, 16:02, "papou" <cestpasbon@çanonplus44.fr> wrote:
Bonjour
Juste une petite rectification :
ObjAcc.Quit
au lieu de ObjAcc.Application.Quit

Mais elle n'explique peut être pas ton erreur.

Cordialement
Pascal

"FFO" a écrit dans le message de news:




Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de
mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la
macro
1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur
distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions- Masquer le texte des messages précédents -


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



Avatar
MichDenis
Tu dois ajouter à ton fichier Excel, la référence :
"Microsoft Activex data object 2.x librairy"

Tu remplaces dans la procédure, "Table" par le nom réelle que
tu veux importer dans Excel.

Si tu désires ouvrir plusieurs tables, tu peux utiliser la même connection
en la déclarant la variable en haut de module...le code s'exécutera plus
rapidement...

'--------------------------------
Sub Test()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0"
.Open "E:CheminFichier.mdb"
With rst
.Open "Table", cnn, adOpenStatic, adLockReadOnly
MsgBox .RecordCount & " enregistrements."
ThisWorkbook.Worksheets("Feuil1").Range("A1").CopyFromRecordset rst
.Close
End With
.Close
End With
Set rst = Nothing: Set cnn = Nothing

End Sub
'--------------------------------


"FFO" a écrit dans le message de news:

Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la macro 1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions
Avatar
FFO
Merci beaucoup de m'avoir consacré un peu de votre temps
j'ai bien pris note de vos sugestions mais qui malheureusement n'ont pas
permis dans le cas exposé la disparition de l'anomalie
J'ai mise en oeuvre avec succés la solution de JB, toujours curieux des
nouveautés
qui apporte l'avange de toute la panoplie des requètes sql et contourne mon
dysfonctionnement exposé

Merci encore à vous

Bonjour
Je confirme que l'utilisation d'ADO serait préférable dans ce genre de
situation.
Ceci étant peut-ête pas besoin d'ajouter une requête query mais plus
simplement une lecture des recordset pour le postionnement direct dans
Excel.
A voir ?

Cordialement
Pascal


"JB" a écrit dans le message de news:

Bonjour,

On peut également s'attacher à une table/requête Access. La Maj est
automatique:

sqlChaine = "select * from client"
RepAppli = ActiveWorkbook.Path
ChaineConn = "ODBC;DSN=MS Access Database;DBQ=" & RepAppli &
"Access2000.mdb"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A1"), Sql:=sqlChaine).Refresh

http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip

JB

On 2 avr, 16:02, "papou" <cestpasbon@çanonplus44.fr> wrote:
Bonjour
Juste une petite rectification :
ObjAcc.Quit
au lieu de ObjAcc.Application.Quit

Mais elle n'explique peut être pas ton erreur.

Cordialement
Pascal

"FFO" a écrit dans le message de news:




Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de
mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la
macro
1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur
distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions- Masquer le texte des messages précédents -


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









Avatar
FFO
La référence était bien à jour
De manière surprenant pour l'instant mon anomalie a disparu donc mon code
fonctionne trés bien
J'ai testé ta proposition qui elle aussi fonctionne à merveille

Je capitalise donc et te remercie beaucoup pour ton aide


Tu dois ajouter à ton fichier Excel, la référence :
"Microsoft Activex data object 2.x librairy"

Tu remplaces dans la procédure, "Table" par le nom réelle que
tu veux importer dans Excel.

Si tu désires ouvrir plusieurs tables, tu peux utiliser la même connection
en la déclarant la variable en haut de module...le code s'exécutera plus
rapidement...

'--------------------------------
Sub Test()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0"
.Open "E:CheminFichier.mdb"
With rst
.Open "Table", cnn, adOpenStatic, adLockReadOnly
MsgBox .RecordCount & " enregistrements."
ThisWorkbook.Worksheets("Feuil1").Range("A1").CopyFromRecordset rst
.Close
End With
.Close
End With
Set rst = Nothing: Set cnn = Nothing

End Sub
'--------------------------------


"FFO" a écrit dans le message de news:

Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la macro 1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions





Avatar
papou
Bonjour
Ta base se trouve t-elle sur un emplacement sur le réseau ?
Si c'est le cas, j'ai plusieurs utilisateurs avec ce soucis.
Pas d'explication à ce jour en dehors d'éventuelles micro-coupures réseau...

Cordialement
Pascal

"FFO" a écrit dans le message de news:

Bonjours à vous tous
Cette anomalie à vous soumettre :
Pour importer les données d'une table Access dans un onglet d'un fichier
excel j'exécute le code suivant :

Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "E:CheminFichier.mdb"
Set Rst = CurrentDb.OpenRecordset("Table")
Workbooks("Fichier.xls").Worksheets("Feuil1").Range("A1").CopyFromRecordset
Rst
MsgBox (CurrentDb.OpenRecordset("Table").RecordCount)
ObjAcc.CloseCurrentDatabase
ObjAcc.Application.Quit
Set ObjAcc = Nothing
Set Rst = Nothing

J'obtiens satisfaction à la première exécution à chaque ouverture de mon
doc excel
En maintenant son ouverture si j'exécute plusieurs fois de suite la macro
1
fois sur 2 j'obtiens un message d'erreur de ce type : "Le serveur distant
n'existe pas ou n'est pas disponible" "Erreur d'exécution 462"

Celà imspire t'il l'un d'entre vous

Merci pour vos suggestions