Bonjour à tous,
Depuis un classeur Excel, j'utilise une ADODB Connection pour aller chercher le contenu d'une plage dans un classeur Excel "Source" sur un réseau
Quand mon classeur Excel source n'est utilisé par personne, jusque là, tout va bien.
Mais quand il est ouvert par un utilisateur, ma Connection.Open semble "télécharger" le fichier en local et l'ouvre (?), puis ma requête plante...
J'ai essayé de farcir les commandes avec les options en ReadOnly, mais je sèche.
Merci pour le coup de main, ci-dessous le code que j'utilise :
pour info, j'ai vérifié mon MSDAC, il est > 2.5.
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
35
36 Dim Source As ADODB.Connection Dim Rst As ADODB.Recordset Dim ADOCommand As ADODB.Command Dim Fichier As String, Cellule As String, Feuille As String 'Adresse de la cellule contenant la donnée à récupérer Cellule = "Planning_" & ctUserName Feuille = "Planning 2013$" 'Chemin complet du classeur fermé Fichier = ThisWorkbook.Path & "\" & ctBaseCentrale Set Source = New ADODB.Connection With Source .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ & Fichier & ";Extended Properties=""Excel 12.0;HDR=NO;""" .Mode = adModeRead .Open End With Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = Source .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]" End With Set Rst = New ADODB.Recordset Rst.Open ADOCommand, , adOpenKeyset, adLockReadOnly Set Rst = Source.Execute("[" & Feuille & Cellule & "]") Range("A21").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing
Merci,
Sylvain
Partager