Pensez à une situation dans laquelle vous rencontrez quotidiennement un nombre de fichiers Excel et vous souhaitez un mécanisme rapide pour vous aider à trouver le nombre de feuilles de calcul présentes dans chaque classeur. Si vous rencontrez un problème similaire, ne manquez pas cet article car il vous aidera beaucoup .

Dans cet article, nous allons apprendre à compter les feuilles de calcul dans plusieurs fichiers avec du code VBA.

Question: * J’ai besoin d’une macro capable de lire une liste de noms de fichiers et de renvoyer le nombre de feuilles de calcul présentes dans chacun des fichiers (il s’agit d’un mécanisme d’audit pour garantir que le nombre correct de feuilles de calcul est présent dans une série de fichiers créés via un autre processus). La macro devra établir le chemin du dossier où se trouvent les fichiers (tous dans le même dossier), puis localiser le premier fichier, identifier le nombre de feuilles de calcul et répéter pour le fichier suivant, etc.

Je pensais pouvoir le faire avec une formule en référençant simplement les noms de fichiers, mais je pense qu’Excel n’a pas de formule simple pour le nombre de feuilles de calcul. Merci!

Si vous souhaitez lire la question d’origine, cliquez sur ici

Voici un instantané des fichiers enregistrés dans un dossier avec l’extension .xlsx

img1

Remarque: il n’y a pas de fichiers protégés par mot de passe.

Pour obtenir le code, nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB:

Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic

img2

  • Copiez le code ci-dessous dans le module standard

Sub ListSheetCounts()

Dim Cell        As Range

Dim Conn        As Object

Dim Cat         As Object

Dim ConnStr     As String

Dim n           As Long

Dim Rng         As Range

Dim RngEnd      As Range

Dim WkbPath     As Variant

Dim Wks         As Worksheet



' Folder path where the workbooks are located.

WkbPath = "C:\Users\Test"



' Name of worksheet with the workbook list.

Set Wks = Worksheets("Sheet1")



' Starting cell of workbook list.

Set Rng = Wks.Range("A2")



' Get the range of cells in the workbook name list.

Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp)

If RngEnd.Row >= Rng.Row Then Set Rng = Wks.Range(Rng, RngEnd)



' Create the needed ADO objects fro this macro.

Set Conn = CreateObject("ADODB.Connection")

Set Cat = CreateObject("ADOX.Catalog")



' Add a final backslash the path if needed.

WkbPath = IIf(Right(WkbPath, 1) <> "\", WkbPath & "\", WkbPath)



' Step through each cell in the workbook list.

For Each Cell In Rng



' Get the worksheet count for the workbook.

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _

& WkbPath & Cell _

& ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"""

Conn.Open ConnStr



Set Cat.ActiveConnection = Conn



' Copy the count to the cell one column to right of the workbook name in the list.

Cell.Offset(n, 1) = Cat.Tables.Count



Conn.Close



Next Cell



' Clean up.

Set Cat = Nothing

Set Conn = Nothing

End Sub

image: https: //www.office-skill.site/images/wp-content-uploads-2015-07-img37.png [img3, largeur = 796, hauteur = 490]

===

img4

  • Au fur et à mesure que nous exécutons la macro, nous obtiendrons le nombre de feuilles de calcul. Reportez-vous à l’instantané ci-dessous:

img5

Remarque: la macro ci-dessus fonctionnera pour l’extension .xlsx & .xls et non pour l’extension activée par macro .xlsm.

Tous les fichiers ci-dessus sont une extension .xlsx Ajoutons une feuille Excel factice, c’est-à-dire Feuille 10 Dans le cas où nous aurions un fichier avec le même nom ayant des extensions .xlsx et .xls, nous devons mentionner le nom du fichier avec leurs extensions respectives comme bien dans notre fichier de test (colonne A) afin que la macro puisse identifier le fichier auquel nous faisons référence & nous donner le résultat correct Si nous n’avons pas mentionné ou avons manqué de mentionner l’extension du fichier avec le même nom, alors la macro donnera nous le décompte de l’extension .xlsx. Reportez-vous à l’instantané ci-dessous:

img6

  • Pour obtenir le nombre de feuilles pour la feuille 10 avec les extensions .xlsx et .xls, nous devons mentionner le nom du fichier avec leurs extensions respectives. L’image de la sortie finale est illustrée ci-dessous:

img7

Conclusion: En utilisant le code macro ci-dessus, nous pouvons compter le nombre de feuilles de calcul dans plusieurs fichiers et si nécessaire pour obtenir le résultat personnalisé, nous pouvons apporter un peu de modification dans le code VBA.

rar icon

Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]