Bonjour à tous,

je m'empresse de détailler ce problème un peu étrange:

Je lance une macro dans un fichier 1, qui établit une connection ADODB avec un fichier 2, les fichiers sont placés sur le réseau.
Jusqu'ici rien de sorcier...
Le but est d'extraire le contenu du fichier 2 et de le placer dans une variable tableau pour ensuite traiter les données.
==> pour les tests j'ai laissé la variable tableau de coté, recopiant simplement les données du fichier 2 dans le 1.

Voici le
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
37
38
39
40
41
42
43
44
Sub Import()
 
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
    Dim oCat As ADOX.Catalog
    Dim Feuille As ADOX.Table
 
    Set Cn = New ADODB.Connection
    Set oCat = New ADOX.Catalog
 
    'Définit le classeur fermé servant de base de données
    Fichier = "Z:\Los Teques 2\Suivi retouches\Extraction global MLT2.xlsx"
 
With Cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
    & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
    .Open
End With
 
    Set oCat.ActiveConnection = Cn
    'Nom de la feuille dans le classeur fermé
    For Each Feuille In oCat.Tables
         NomFeuille = Feuille.Name
    Next Feuille
    'il n'y aura qu'une feuille mais je n'ai pas trouvé d'autre moyen 
    'pour isoler le nom de cette feuille, d'ailleurs si quelqu'un a une idée...
 
    'Définit la requête.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    'Ecrit le résultat de la requête dans le fichier 1 à partir de la cellule A3
    ActiveWorkbook.Sheets("Points").Range("A3").CopyFromRecordset Rst
 
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
 
End Sub
Cas 1 - Qui marche :
Le fichier 2 est fermé, tranquille pépére sur le réseau, la macro s'éxécute, le fichier 2 ne s'ouvre pas, les données sont extraites.

Cas 2 - Qui ne marche pas :
Le fichier 2 est ouvert par quelqu'un sur le réseau, la macro s'exécute, le fichier 2 s'ouvre lors de l'exécution de cn.open !! (bien sûr en lecture seule)
Je pourrais simplement tester l'ouverture du fichier et le cas échéant le fermer, or mon but ici est d'extraire les données du fichier sans l'ouvrir...

Merci à tout ceux qui prêteront attention à ce post !