I tried (and I finally succeeded) to make this program (thanx to your help). I will write it below, because I wanna know if you made the same thing:
Dim CountFiles As Long
Private Function CountSubFolders(Path As String) As Double
Dim FSO As Object
Screen.MousePointer = vbHourglass
Set FSO = CreateObject("Scripting.FileSystemObject"

If Not FSO.FolderExists(Path) Then
CountSubFolders = -1
Exit Function
End If
CountSubFolders = CountSubFoldersRec( _
FSO.GetFolder(Path)) - 1
Set FSO = Nothing
Screen.MousePointer = vbNormal
End Function
Function CountSubFoldersRec(Folder As Object) As Double
Dim I As Long, SubFolder As Object, FileObject As Object
CountSubFoldersRec = 1
For Each FileObject In Folder.Files
CountFiles = CountFiles + 1
Next
For Each SubFolder In Folder.SubFolders
CountSubFoldersRec = CountSubFoldersRec + _
CountSubFoldersRec(SubFolder)
Next
End Function
Private Sub Command1_Click()
MsgBox CountSubFolders("C:\"

& " folders, " & CountFiles & " files."
End Sub
It works to me pretty fast (PIII, 600MHZ, 256RAM counts Program Files - 16447 Files, 983 Folders in about 4 secs - just as fast as in Explorer).
If your code is different from mine, I'd like to know what you did (I mean I'm not too delighted to use a recursive function to count all the files). I was wondering if there's an API function which counts all the Files straight from the FAT, without being needed a recursive function, which could crash if there are too many iterations.
Do you have any idea how this could be done in C++ ?