Fonction compte nombre de file

Bonjour à tous,

Je souhaiterais récupérer dans une variable le nombre de classeur que j'ai dans un dossier déterminé.

J'ai pris comme support le code suivant que j'ai copié en ligne et que j'ai modifié afin qu'il corresponde mieux à ce que je souhaiterais avoir.

Function CountFilesInFolder(strDir) As String
'DEVELOPER: Ryan Wells (wellsr.com)
'DESCRIPTION: This macro counts the files in a folder and retuns the result in a msgbox
'INPUT: Pass the procedure a string with your directory path and an optional
' file extension with the * wildcard
'EXAMPLES: Call CountFilesInFolder("C:\Users\Ryan\")
' Call CountFilesInFolder("C:\Users\Ryan\", "*txt")
    Dim file As Variant, i As Integer
    If Right(strDir, 1) <> "\" Then strDir = strDir & "\"
    file = Dir(strDir & strType)
    While (file <> "")
        i = i + 1
        file = Dir
    Wend

End Function

Sub TestCount()

Call CountFilesInFolder("C:\Users\Desktop\Test\")

End Sub

Toutefois, le code me renvoit une erreur. (voir capture ci-joint)

Pourriez-vous m'aider s'il vous plaît?

Merci par avance pour votre aide.

capture

Bonjour,

As tu essayé de renommer ta procédure CountFilesInFolder ?

Bonjour,

J'ai essayé d'inscrire tes codes dans le présent fichier et ça fonctionne bien.

Comme il faut renommer le chemin en fonction de la machine sur laquelle on travaille, j'ai modifié une partie du code de manière à ce que ça compte le nombre de fichiers du le dossier dans lequel est enregistré le présent fichier (donc ça le compte également).

Je présume donc que ton problème vient du fait que tu as quelque chose d'autre dans ton fichier qui crée problème. Sans voir ton fichier réel, dur-dur de t'aider.

Amicalement.

76testcount-v2.xlsm (25.29 Ko)

Bonjour @Yvouille, @vince1512,

Je vous remercie pour votre aide.

@Yvouille:

J'ai testé votre code et cela fonctionne parfaitement de mon côté.

Je souhaiterais savoir est-il possible de récupérer dans une variable x de la macro TestCount le nombre de file (en utilisant la fonction CountFilesInFolder?

Merci par avance pour votre aide.

Je souhaiterais savoir est-il possible de récupérer dans une variable x de la macro TestCount le nombre de file

Plutôt deux fois qu'une

Sur l'image ci-jointe - à agrandir par un clic - tu vois que la variable i, qui est chargée au fur et à mesure du comptage des fichiers, est utilisée pour le MsgBox. Mais tu pourrais bien entendu l'utiliser pour toutes sortes d'autres emplois.

Amicalement.

capture

Mais éventuellement que je t'ai mal compris.

Si tu veux pouvoir utiliser la valeur de i dans la Sub TestCount (), tu dois modifier le code ainsi :

capture bis
71testcount-v3.xlsm (19.38 Ko)

Bonjour le fil

Dans le code initial suivant

Function CountFilesInFolder(strDir) As String
'DEVELOPER: Ryan Wells (wellsr.com)
'DESCRIPTION: This macro counts the files in a folder and retuns the result in a msgbox
'INPUT: Pass the procedure a string with your directory path and an optional
' file extension with the * wildcard
'EXAMPLES: Call CountFilesInFolder("C:\Users\Ryan\")
' Call CountFilesInFolder("C:\Users\Ryan\", "*txt")
    Dim file As Variant, i As Integer
    If Right(strDir, 1) <> "\" Then strDir = strDir & "\"
    file = Dir(strDir & strType)
    While (file <> "")
        i = i + 1
        file = Dir
    Wend

End Function

Sub TestCount()

Call CountFilesInFolder("C:\Users\Desktop\Test\")

End Sub

Il y a 3 erreurs !!!

1)

 'DESCRIPTION: This macro counts the files in a folder and retuns the result in a msgbox

alors qu'il n'y a aucun MSGBOX dans la fonction, il est seulement ajouté par la suite par Yvouille je crois

2)

La fonction

Call CountFilesInFolder("C:\Users\Desktop\Test\")

est mal utilisée une fonction ne s'appelle pas par un CALL mais par une affectation généralement quelque chose comme : "variable = LaFonction(paramètre)"

3)

Une fonction doit retourner quelque chose or la fonction CountFilesInFolder (de type String) ne retourne rien du tout !

Il faudrait avoir dans le corps de cette fonction quelque du genre CountFilesInFolder = quelqueChose

En conclusion ou bien j'ai loupé un élément, la solution est simplement :

Function CountFilesInFolder(strDir) As Long ' <==== pour pouvoir renvoyer un nombre de type long
'DEVELOPER: Ryan Wells (wellsr.com)
' =====> tel que le prouve sa description avec le "count"
'DESCRIPTION: This macro counts the files in a folder and retuns the result in a msgbox
'INPUT: Pass the procedure a string with your directory path and an optional
' file extension with the * wildcard
'EXAMPLES: Call CountFilesInFolder("C:\Users\Ryan\")
' Call CountFilesInFolder("C:\Users\Ryan\", "*txt")
    Dim file As Variant, i As Integer
    If Right(strDir, 1) <> "\" Then strDir = strDir & "\"
    file = Dir(strDir & strType)
    While (file <> "")
        i = i + 1
        file = Dir
    Wend
    ' La fameuse ligne d'affectation manquante de cette fonction !!!
    CountFilesInFolder = i
     '-----------------------------------------------------------------------
End Function

Sub TestCount()

' Soit avec une variable (à déclarer en Public ou en Locale selon les besoin)
nbrFic = CountFilesInFolder("C:\Users\Desktop\Test\") 
MsgBox "Dans votre réppertoire il y a " & nbrFic & " Fichiers"
' Soit directement
MsgBox "Dans votre réppertoire il y a " & CountFilesInFolder("C:\Users\Desktop\Test\") & " Fichiers"

End Sub

Bonjour @Gli73, Yvouille,

Mille mercis pour votre aide et pour les explications détaillées que vous avez apportés.

2)

La fonction

Call CountFilesInFolder("C:\Users\Desktop\Test\")

est mal utilisée une fonction ne s'appelle pas par un CALL mais par une affectation généralement quelque chose comme : "variable = LaFonction(paramètre)"

@Gil73: Effectivement, je souhaitais utiliser la fonction et "stocker" le résultat dans une variable.

Encore merci à vous deux, j'ai testé sur mon fihcier et cela répond parfaitement à ce que je recherchais.

Bon après-midi.

Bonjour

Merci en retour pour

Mille mercis pour votre aide et pour les explications détaillées que vous avez apportés.

N'hésites pas à revenir poser d'autres questions...

Rechercher des sujets similaires à "fonction compte nombre file"