Bonjour,
J'ai parcouru le net à la recherche d'une solution mais celles proposées ne fonctionnent pas ou ne me renvoient pas exactement ce que je souhaite.
Voila mon probleme: j'ai réalisé une macro qui extrait les données de plusieurs classeurs fermés, et qui les range dans le classeur actuellement ouvert ("ActiWorkbook"). Tous ces classeurs ont le même format et normalement le même nom de feuille. J'aimerais néanmoins éviter les erreurs futures (si des versions américaines d'excel sont utilisées...) et pouvoir extraire le nom de la première feuille pour l'utiliser par la suite, et ce sans avoir à ouvrir les différents classeurs, étant donné qu'il y en a un certain nombre.
Voici le code utilisé pour extraire les données:
Ma Variable "Feuille" étant pour l'instant toujours égale à "Feuil1".
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 Function ExtraireValeur(ByVal Chemin As String, ByVal Feuille As String, ByVal Cellule As String) ' Fonction permettant de récupérer des données d'une feuille excel sans l'ouvrir Dim Argument As String Dim Fichier As String Dim Dossier As String Fichier = Filename(Chemin) Dossier = FilePath(Chemin) Fichier = Replace(Fichier, "'", "''") Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1) ExtraireValeur = ExecuteExcel4Macro(Argument) End Function
J'ai tenté la solution proposée sur : http://silkyroad.developpez.com/VBA/...Fermes/#LIII-B
(Test sur le nom d'une feuille) sans succès.
La fonction Ocat.Tables(1).Name ne fonctionnant visiblement pas (je doit sans doute m'y prendre mal).
Si vous avez des idées?
Edit:
Le problème est résolu, l'initialisation de "Tables" est à 0 et non à 1
Voici donc mon code (inspiré en grande partie de :http://silkyroad.developpez.com/VBA/...Fermes/#LIII-B
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 Function VerifierExistenceFeuille(Fich As String) As String Dim Cn As ADODB.Connection Dim oCat As ADOX.Catalog Dim Fichier As String Dim Feuille As ADOX.Table Dim Nom As String Fichier = Fich Set Cn = New ADODB.Connection Set oCat = New ADOX.Catalog Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _ ";Extended Properties=Excel 8.0;" Set oCat.ActiveConnection = Cn On Error Resume Next Set Feuille = oCat.Tables(0) Nom = Feuille.Name VerifierExistenceFeuille = Replace(Nom, "$", "") Set Feuille = Nothing Set oCat = Nothing Cn.Close Set Cn = Nothing End Function
Partager