Bonjour,
J'ai repris en l'adaptant un peu l'exemple de SilkyRoad
J'ai contrôlé mes valeurs passées en paramètre et elles sont correctes.
Le MsgBox avec Dir sur mon fichier m'affiche le nom du fichier recherché
Le MsgBox (QueryStr) m'affiche la requête
Le MsgBox (2) n'est pas atteint
Je ne vois pas mon erreur de syntaxe sachant que mon objectif est de lire une cellule déterminée d'un fichier xlsm fermé et de retourner sa valeur.
Merci pour votre regard extérieur.
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
45
46
47
48
49
50
51
52 Function LireCellule_ClasseurFerme( _ Chemin As String, _ Fichier As String, _ Feuille As String, _ Cellule As Variant) As Variant 'Nécessite d'activer la référence Microsoft ADO ext x.x for DLL and Security 'Nécessite d'activer la référence Microsoft ActiveX Data Objects x.x Library 'Menu Outils/Références Application.Volatile Dim Connexion As New ADODB.Connection 'Définir une variable ADODB Connection et Créer une nouvelle instance Dim Rst As New ADODB.Recordset 'Pour accueillir un RecordSet et Créer une nouvelle instance Dim CheminFichier As String Dim QueryStr As String '/!\ Attention à ne pas oublier le symbole \ entre le chemin et la feuille. CheminFichier = Chemin & "\" & Fichier '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille. Feuille = Feuille & "$" '/!\ Attention lire une cellule il faut rechercher sous la forme A1:A1 Cellule = Cellule & ":" & Cellule MsgBox Dir(CheminFichier) 'test l'existence du fichier '--- Connexion --- With Connexion .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ & CheminFichier & ";Extended Properties=""Excel 12.0;HDR=YES;""" .Open End With '----------------- '---- Lecture Fichier --- QueryStr = "SELECT * FROM [" & Feuille & Cellule & "]" MsgBox (QueryStr) '---- Lecture Fichier --- Set Rst = Connexion.Execute(QueryStr) MsgBox (2) '---- Lecture Cellule --- 'Ecrit le résultat de la requête dans la cellule 'Range("AM2").CopyFromRecordset Rst '--- Fermeture connexion --- Rst.Close Connexion.Close Set Connexion = Nothing Set Rst = Nothing End Function
Partager