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

Philippe Tulliez

VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère

Noter ce billet
par , 13/04/2022 à 11h32 (2142 Affichages)
Préambule

Que ce soit pour effectuer une sélection simple ou multiple, une copie, un transfert, il est fréquent que nous ayons besoin d'obtenir la liste des feuilles d'un classeur quelconque dont le nom.
  • commence par
  • se termine par
  • contient
  • et évidemment égal à

Il y a quelques années, j'ai écrit une fonction générique qui renvoie la liste des feuilles d'un classeur suivant critère. C'est cette fonction que je publie et commente dans ce billet.

Nom : MsgBox Liste des feuilles cherchées (Function GetSheetList).png
Affichages : 241
Taille : 13,3 Ko

Code de la procédure

La fonction générique nommée GetSheetList renvoie la liste des feuilles dont le nom (propriété Name ou CodeName) répond au critère (Argument Name de la fonction)
Tous les arguments sont optionnels. Si aucun argument n'est utilisé la fonction renvoie la liste de toutes feuilles (propriété CodeName) du classeur actif.
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
31
32
Function GetSheetList(Optional Name As String, _
                      Optional oWorkbook As Workbook, _
                      Optional UsedSheetName As Boolean) _
                      As Variant
  ' Renvoie la liste des feuilles Sheet et Worksheet
  '         soit suivant leus CodeName (Défaut) soit par rapport à la propriété Name
  ' - Non sensible à la casse
  ' - Les caractères génériques * et ? sont autorisés
  '
  ' Philippe Tulliez www.magicoffice.be
  ' Arguments
  '  [Name]         Nom du CodeName ou Name de la feuille à trouver (Par défaut toute la liste)
  '  [oWorkbook]    Objet Classeur (ActiveWorkbook par défaut)
  '  [UseSheetName] True pour la propriété Name (CodeName par défaut)
  '
  Dim c As Integer, i As Integer, n As String, t As Variant
  If oWorkbook Is Nothing Then Set oWorkbook = ActiveWorkbook
  If Len(Name) = 0 Then Name = "*"
  '
  With oWorkbook
    For i = 1 To .Sheets.Count
      With .Sheets(i)
        n = IIf(UsedSheetName, .Name, .CodeName) ' N prend la valeur Name ou CodeName
      End With
      If LCase(n) Like LCase(Name) Then
         If c Then ReDim Preserve t(c) Else ReDim t(c)
         t(c) = n: c = c + 1
      End If
    Next
  End With
  GetSheetList = t
End Function

Exemple d'une procédure l'invoquant

Dans la procédure ci-dessous, la fonction GetSheetList renvoie la liste des feuilles dont le nom commence par le mot Bilan
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
Sub TestGetSheet()
  Const txt As String = "Bilan*"
  Dim Msg As String, Tbl As Variant, e As Integer
  '
  Tbl = GetSheetList(Name:=txt, UsedSheetName:=True) ' Renvoie la liste des feuilles (Propriété Name)
  '
  If IsArray(Tbl) Then
     Msg = "Feuilles trouvées dans le classeur "
     For e = LBound(Tbl) To UBound(Tbl)
       Msg = Msg & vbCrLf & String(5, 32) & Tbl(e)
     Next
     Msg = Msg & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
   Else
     Msg = "Pas trouvé de feuille correspondant aux critères " & ""
  End If
  MsgBox Msg, Title:="Sélection des feuilles " & txt
End Sub

Quelques syntaxes pour l'argument Name

Name:= "Bilan*", le nom commence par Bilan
Name:= "*Bilan", le nom se termine Bilan
Name:= "*Bilan*", le nom contient Bilan
Name:= "Dupon?", le début de la chaîne de caractères du nom est égal à "Dupon" et le dernier caractère peut avoir n'importe quelle valeur

Tutoriel ou billet pour en savoir plus

Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Viadeo Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Twitter Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Google Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Facebook Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Digg Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Delicious Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog MySpace Envoyer le billet « VBA - Excel - Fonction qui renvoie la liste des feuilles d'un classeur suivant critère » dans le blog Yahoo

Mis à jour 16/05/2022 à 07h07 par Philippe Tulliez

Catégories
VBA Excel

Commentaires

  1. Avatar de peter10
    • |
    • permalink
    Bonsoir,
    Je travaille chez un particulier en restauration. Là je gère les achats et la gestion des stocks.
    En effet je souhaiterais avoir une base de données sous format access de gestion des achats et stock qui me permettra d'avoir une visibilité du stock, achat et sortie de stock.
    À la fin de mois je dois faire l'inventaire et ressortir les écarts.
    Un bouclage sera fait avec le ratio nourritures et Boissons.

    Votre aide me serait utile.

    Cdt
  2. Avatar de Philippe Tulliez
    • |
    • permalink
    Bonjour Peter,
    Je ne comprends pas trop le sens de votre commentaire qui n'a rien à voir avec le sujet de mon billet.
    Philippe

    Citation Envoyé par peter10
    Bonsoir,
    Je travaille chez un particulier en restauration. Là je gère les achats et la gestion des stocks.
    En effet je souhaiterais avoir une base de données sous format access de gestion des achats et stock qui me permettra d'avoir une visibilité du stock, achat et sortie de stock.
    À la fin de mois je dois faire l'inventaire et ressortir les écarts.
    Un bouclage sera fait avec le ratio nourritures et Boissons.

    Votre aide me serait utile.

    Cdt