Dans cet article, je vous propose une fonction qui renvoie une liste des noms de feuilles d'un classeur. Cette fonction est générique et flexible, ce qui signifie qu'elle peut être adaptée à diverses situations.
Elle peut renvoyer tous les noms de feuilles ou seulement ceux qui correspondent à certains critères. De plus, vous pouvez choisir de renvoyer le nom d'affichage (la propriété Name) ou le nom de code (la propriété CodeName) de chaque feuille.
Comprendre le fonctionnement de la procédure
Une fois que nous avons compris le but de la fonction, il est essentiel d'aborder son fonctionnement interne pour tirer le meilleur parti de ses capacités.
Un élément central de cette fonction est l'utilisation de la clause LIKE dans la recherche de critères. Cela signifie que vous pouvez utiliser des caractères génériques dans vos critères pour rendre votre recherche plus flexible.
Par exemple, vous pouvez utiliser l'astérisque (*) pour représenter n'importe quel nombre de caractères et le point d'interrogation (?) pour représenter un caractère unique
Voici quelques exemples de chaîne de caractères que vous pouvez passer à l'argument Criteria
"*Bilan*" ) renverra toutes les feuilles dont le nom contient "Bilan" n'importe où dans le nom, "Bilan*" renverra toutes celles dont le nom commence par "Bilan" et "*Bilan" les feuilles dont le nom se termine par bilan.
Si vous passez à l'argument Criteria, la chaîne "*20??", la fonction renverra toutes les feuilles dont le nom se termine par "20" et deux caractères quelques soit leurs valeurs comme "2020", "2021", "2022", etc.
Pour une compréhension plus approfondie de l'utilisation de la clause LIKE et des caractères génériques, vous pouvez consulter le tutoriel de Fabrice Constans L'opérateur LIKE que je recommande fortement.
Outre le paramètre Criteria, la fonction GetSheetList, a deux autres arguments
Code de la procédure
Cette fonction nommée GetSheetList a trois arguments Criteria, oWorkbook et CodeName, tous optionnels
Criteria est une chaîne de caractères dont vous avez eu l'explication dans le chapitre Comprendre le fonctionnement de la fonction si celle-ci est vide, la liste retournée contiendra tous les noms de feuilles
oWorkbook est un objet Workbook qui désigne par défaut le classeur actif si aucun autre n'est spécifié
CodeName est un booléen. Si l'on souhaite avoir la liste des feuilles par leur propriété CodeName, il faut mettre cet argument à True. La critère de recherche porte également sur cette propriété.
Code vba : | Sélectionner tout |
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 | Function GetSheetList(Optional Criteria As String, _ Optional oWorkbook As Workbook, _ Optional CodeName As Boolean) As Variant ' Renvoie la liste des feuilles du classeur définit par ' l'argument oWorkbook. Si Nothing = le classeur actif ' en fonction de [Criteria] (si vide renvoie la liste complète) ' Philippe Tulliez (https://magicoffice.be) ' Arguments ' [Criteria] Chaîne à chercher dans le nom ' [oWorkbook] Objet Workbook dont on veut la liste des feuilles ' [CodeName] La liste et le critère porte sur le CodeName Dim t As Variant Dim e As Integer Dim c As Integer Dim n As String If oWorkbook Is Nothing Then Set oWorkbook = ActiveWorkbook If Len(Criteria) = 0 Then Criteria = "*" With oWorkbook For e = 1 To .Sheets.Count With .Sheets(e) n = IIf(CodeName, .CodeName, .Name) If n Like Criteria Then If c Then ReDim Preserve t(c) Else ReDim t(c) t(c) = n: c = c + 1 End If End With Next End With GetSheetList = t End Function |
Exemple d'une procédure qui l'invoque
Dans cet exemple, nous cherchons la liste de toutes les feuilles du classeur actif dont le CodeName commence par sht
Code vba : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | Sub TestGetSheetList() Const s As String = "sht*" ' Critère de recherche Dim t As Variant Dim m As String t = GetSheetList(Criteria:=s, CodeName:=True) If IsArray(t) Then m = Join(t, vbCrLf) Else m = "Pas de feuilles correspondantes à " & s End If MsgBox m End Sub |
Ressources
Tutoriels ou billets à lire éventuellement sur les sujets abordés