Import table access aléatoire

Le
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: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
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 #4314141
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"
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


JB
Le #4314091
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"
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"



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 -



papou
Le #4314071
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"
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"
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"



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 -



MichDenis
Le #4314011
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"
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
FFO
Le #4313961
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"
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"
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"



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 -









FFO
Le #4313901
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"
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





papou
Le #4313141
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"
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


Publicité
Poster une réponse
Anonyme