Comment trouver le nom d'une feuille sans ouvrir le classeur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

franckylateuf

XLDnaute Nouveau
Bonjour,

Je souhaite à partir d'une Macro placée dans un classeur A récupérer des cellules d'un classeur B. Pour faire cela j'utilise le code suivant dans ma macro :
Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
resultat = ExecuteExcel4Macro(Argument)

Mon soucis est que le nom de la variable Feuille utilisé ci-dessus correspond au nom de la feuille ce qui m'oblige donc à le connaitre.
Ce nom ne m'étant pas toujours connu l'idée serait de récupérer non pas le nom de la feuille mais le nom de l'objet qui est sur tous classeur (Feuil1, Feuil2, Feuil3...)
Nom de l'objet Nom de la feuille (visible sous Excel)
Feuil1 toto1
Feuil2 toto2
Feuil3 toto3

Ma question est donc comment puis je récupérer le nom de la feuille 1 d'un classeur sans l'ouvrir?

Merci d'avance,

Cordialement,
 
Re : Comment trouver le nom d'une feuille sans ouvrir le classeur

Bonjour Franky,

Voici une fonction qui retourne un tableau avec les noms de feuilles d'un classeur fermé.

A appeler comme ceci

Code:
[COLOR=olive]'Préparer une variable qui contiendra la liste des feuilles[/COLOR]
Dim ListeDesFeuilles as variant
 
[COLOR=olive]'Appel de la fonction[/COLOR]
ListeDesFeuilles = GetListeFeuilles ("NomCompletDuFichierExcel")
 
[COLOR=olive]'Vérifier que la fonction ait bien retourné un tableau[/COLOR]
If IsArray(ListeDesFeuilles) Then
    '.....Traitememt du tableau des noms de feuilles
End If


Code:
Function GetListeFeuilles(Fichier As String) As Variant
Dim cnx 'Connexion ADO
Dim cat 'Catalogue ADO
Dim xlTables As Variant     'Une table dans le catalogue
Dim result() As Variant       'Tableau de sortie de la fonction
Dim i As Integer            'Compteur des tables
' Création des objets ADO
  Set cnx = CreateObject("ADODB.Connection")
  Set cat = CreateObject("ADOX.Catalog")
  
  'Vérification de l'existence du fichier à consulter
  If Dir(Fichier) = "" Then
    MsgBox "Le fichier '" & Fichier & "' est introuvable!", vbExclamation, "GetListeFeuilles"
    Exit Function
  End If
  
  'Ouverture connexion
  cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=Excel 8.0;"
  
  'Récupération du catalogue
  Set cat.ActiveConnection = cnx
    
  'Boucle sur la liste des tables
  For Each xlTables In cat.Tables
  
    'Les noms de table finissant pas "$" ou "$'" sont des noms de feuilles
    If InStr(1, Right(xlTables.Name, 2), "$") > 0 Then
        
        'Ajouter au tableau
        ReDim Preserve result(0 To i)
        result(i) = Replace(Replace(xlTables.Name, "$", ""), "'", "")
        i = i + 1
    
    End If
  Next
  
  cnx.Close
  Set cnx = Nothing: Set cat = Nothing
  GetListeFeuilles = result
  
End Function

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour