IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

[Actualit�] Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel

Noter ce billet
par , 30/07/2023 � 09h20 (7077 Affichages)
Introduction
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 - 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
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 - Visualiser dans une fen�tre � part
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

Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Viadeo Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Twitter Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Google Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Facebook Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Digg Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Delicious Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog MySpace Envoyer le billet � Extraction flexible des noms de feuilles avec une fonction g�n�rique VBA pour Excel � dans le blog Yahoo

Mis � jour 30/07/2023 � 21h13 par Malick (Ajout balises code)

Cat�gories
VBA Excel

Commentaires