Bonjour à tous,

J'ai tenté d'utiliser un code trouvé dans un tutoriel mais sans succès. J'ai donc cherché une autre solution et je suis tombée sur ce post: ça fonctionne parfaitement sur mon ordi (j'ai office 2010). ça ne fonctionne pas sur l'ordi d'un collègue (office 2003). Quand je vais voir les références, on a les mêmes (à part que j'ai microsoft excel 14.0 quand il a le 11.0, idem pour microsoft access).

J'ai fait du pas à pas pour voir où ça bloquait. C'est ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
Worksheets("Update").Range("A2").CopyFromRecordset rst
En mode debug, la ligne jaune va sur Set rst puis passe au message d'erreur inclus dans le code "Une erreur est survenue, fermeture de la base", si je clique sur ok du message d'erreur, il réapparait, et ce des dizaines de fois (je n'ai pas compté mais je suppose que le nombre correspond au nombre de lignes de ma requête).

Le code complet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
Const ML_PATH = "D:\xxx\MyDB.mdb"
Const ML_QUERY = "Query2011"
 
Sub Test()
Call LancementRequêteAccess
End Sub
 
Function LancementRequêteAccess()
On Error GoTo Err_Function
Dim oAccesS As Access.Application
Dim db As DAO.Database
Dim qdf As QueryDef
Dim rst As DAO.Recordset
 
Set oAccesS = CreateObject("Access.Application")
oAccesS.OpenCurrentDatabase ML_PATH
Set db = oAccesS.CurrentDb
Set qdf = db.QueryDefs(ML_QUERY)
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
Worksheets("Update").Range("A2").CopyFromRecordset rst
Exit_Err:
rst.Close: qdf.Close: db.Close
oAccesS.CloseCurrentDatabase
Set rst = Nothing
Set qdf = Nothing
Set db = Nothing
Set oAccesS = Nothing
Exit Function
 
Err_Function:
  MsgBox "Une erreur est survenue, fermeture de la base"
  Resume Exit_Err
End Function
Auriez-vous une idée de pourquoi ça marche chez moi et pas chez le collègue ?

Merci !