En parlant de macros: certaine de mes anciennes macros ne fonctionnent plus : il y a des applications et commandes cachées. FileSearch par exemple. je n'ai pas trouvé comment les réactiver.
bqtr à dit:J'ai fait un fichier (sous Excel 2003) pour quelqu'un dans lequel j'utilise FileSearch. Avec Excel 2007, la macro ne fonctionne plus.
N'ayant pas installé et ne connaissant pas Excel 2007 je vois pas trop comment remédier à cela.
Private Sub ElementsRepertoire()
Dim objShell As Object, strFileName As Object
Dim objFolder As Object
Dim i As Integer
Dim Executable As String
Dim chemin As String
If Me.TextBox1 = "" Then
MsgBox "indiquez le chemin", vbOKOnly, "Chemin?"
Exit Sub
End If
chemin = Me.TextBox1
'initialiser les objets
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(CStr(chemin))
'Suppression des ancien éléments
Me.ListBox1.Clear
'Boucle sur les fichiers du dossier cible
'******************************
For Each strFileName In objFolder.Items
'Vérifie s'il s'agit d'un sous dossier (non pris en compte)
If strFileName.IsFolder = False Then
i = i + 1
'rajouter chaque fichier dans listbox1
With Me.ListBox1
'Ajoute une ligne
.AddItem (objFolder.GetDetailsOf(strFileName, 0)) 'chemin & "\" & objFolder.GetDetailsOf(strFileName, 0)
End With
End If
Next strFileName
Me.ListBox1.ColumnWidths = "600"
End Sub
Par contre, comment lui dire de compter les fichiers dans les sous dossiers du chemin qu'on lui demande
exemple : C:\WINDOWS\test.txt
si je rentre le chemin "C:\" , je voudrais qu'il me trouve le fichier test.txt
MichelXld à dit:bonjour
Tu souhaites vérifier qu'un fichier existe ?
https://www.excel-downloads.com/threads/migration-filesearch-excel-2002-vers-2007.77162/
ou lister tous les fichiers d'un répertoire et de ses sous répertoires?
si tu cherches tous les fichiers à partir de la racine C:\, ça risque d'être très long ...
ça fait toujours plaisir à lire apres voir passé une heure à te préparer une procedure ...Alors michelxld, tu n'aurais pas une petite idée pr moi ...
(en fait , je voudrais compter les nombres de fichiers excel dans un repertoire, ainsi que ses sous repertoire)
Option Explicit
Dim objWMIService As Object
Dim Lettre As String
Dim Resultat As Integer
Sub Test()
Dim strComputer As String, Chemin As String
strComputer = "."
Chemin = "C:\Documents and Settings\mimi\dossier\general\excel"
Lettre = Left(Chemin, 2)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
SousDossiers Chemin, True
MsgBox "Il y a " & Resultat & " classeurs Excel dans " & vbCrLf & "'" & Chemin & "'" & _
vbCrLf & "et ses sous répertoires."
Resultat = 0
Set objWMIService = Nothing
End Sub
Sub SousDossiers(ByVal NomDossier As String, BoolSousRep As Boolean)
Dim colSubfolders As Object, objFolder As Object
Dim colFiles As Object
Dim Repertoire As String
Repertoire = Application.WorksheetFunction.Substitute(NomDossier, "\", "\\")
Repertoire = Mid(Repertoire, 3) & "\\"
'----------
Set colFiles = objWMIService. _
ExecQuery("SELECT * FROM CIM_DataFile WHERE Path = '" & Repertoire & "' " & _
"AND Drive = '" & Lettre & "' AND Extension = 'xls'")
Resultat = Resultat + colFiles.Count
'Debug.Print NomDossier
'----------
If BoolSousRep Then
Set colSubfolders = objWMIService.ExecQuery _
("Associators of {Win32_Directory.Name='" & NomDossier & "'} " _
& "Where AssocClass = Win32_Subdirectory " & "ResultRole = PartComponent")
For Each objFolder In colSubfolders
SousDossiers objFolder.Name, BoolSousRep
Next
End If
End Sub