Bonjour à tous,

Je viens de créer un petit programme pour récupérer les données de différents classeurs stockés sur le réseau de ma boite.

Voici mon programme :


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

PublicSub Traitement_Classeur()
Le_Classeur = Dir(Mon_Repertoire & "\" & "*.xlsm") 'Identification du classeur
i = F_Conso_Besoins.Cells(Rows.Count, Col_Ref_Bes).End(xlUp).Row +1

DoWhile Len(Le_Classeur) > 0'Tant qu'on a un classeur
Set LA_SOURCE = CreateObject("ADODB.Connection")



'--- Connexion ---
With LA_SOURCE.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Mon_Repertoire & "\" & Le_Classeur & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
EndWith


'----- Requete -----Texte_SQL = "SELECT * FROM [" & Nom_F_Besoins & "$" & Ma_Plage_N & "]"
Set Requete = LA_SOURCE.Execute(Texte_SQL)



'--- restitution sur feuille classeur cible
F_Conso_Besoins.Range("A" & i).CopyFromRecordset Requete


i = F_Conso_Besoins.Cells(Rows.Count, Col_Ref_Bes).End(xlUp).Row + 1
Le_Classeur = Dir() 'prochain classeur
Loop
EndSub
Le problème avec ce programme c'est que lorsque je lance le programme et que l'un des classeurs sources est ouvert par un autre utilisateur, il s'ouvre en lecture seule chez moi ...
Alors que je voulais passer par une récupération des données en n'ouvrant pas les classeurs pour gagner du temps ... car in fine je vais avoir 200 classeurs à parcourir ...

Y a t il un moyen de récupérer les données sans ouvrir le classeur source même si ce dernier est ouvert par un autre utilisateur?

Merci à tous.