EXPLORATEUR DE WINDOWS ET RECHERCHE FICHIER
Le
Nicolas

Bonjour à tous,
j'utilise souvent : Shell "explorer.exe " & chemin, vbMaximizedFocus
pour ouvrir l'explorateur de Windows sur un dossier par défaut.
Mais parfois, je souhaiterais remplir automatiquement le champ prévu pour=
rechercher un nom de fichier donné. (Windows 7).
¿ est-ce possible ?
Merci d'avance pour votre aide.
À bientôt.
j'utilise souvent : Shell "explorer.exe " & chemin, vbMaximizedFocus
pour ouvrir l'explorateur de Windows sur un dossier par défaut.
Mais parfois, je souhaiterais remplir automatiquement le champ prévu pour=
rechercher un nom de fichier donné. (Windows 7).
¿ est-ce possible ?
Merci d'avance pour votre aide.
À bientôt.
Suppose que tu veux voir la location d'un fichier spécifique dans l'explorateur de Windows :
Pour définir cette variable avec le chemin seulement ou un fichier dans un répertoire
particulier... c'est selon ce que tu désires....
CheminEtFichier = "c:windowsnotepad.exe"
OU
CheminEtFichier = "c:UsersTon profilDocuments"
Explorateur Windows va s'ouvrir en sélectionnant soit le fichier ou le répertoire à l'écran.
Exemple :
'------------------------------------------------------------------------------------
Sub Voir_Un_Fichier_Dans_Explorateur_Fichiers_Window()
Dim CheminEtFichier As String
'Tu définis le chemin et le fichier de ton choix
CheminEtFichier = "c:windowsnotepad.exe"
'Pour tester si le fichier existe pour un répertoire
'If If Dir(Chemin, vbDirectory ) <> "" Then
If Dir(CheminEtFichier) <> "" Then
Shell "C:WINDOWSEXPLORER.EXE /select," & CheminEtFichier, vbNormalFocus
Else
MsgBox "Le fichier """ & CheminEtFichier & """ est " & _
"introuvable dans le chemin spécifié."
End If
End Sub
'------------------------------------------------------------------------------------
Tu as différentes alternatives pour la ligne de syntaxe selon le résultat que tu veux :
(désolé, mais je ne fais pas de traduction.
'-------------------------------------------------------------------------------------
Syntax
EXPLORER.EXE [/n][/e][,/root,<object>]
EXPLORER.EXE [/n][/e][,/select,<object>]
Command Line Switches
/n:
Opens a new window in single-paned (My Computer) view for each item selected, even if the new window
duplicates a window that is already open.
/e:
Uses Windows Explorer view (Opens a 2 pane view of the selected folder).
/root,<object>:
Specifies the root level of the specified view.
The default is to use the normal namespace root (the desktop). Whatever is specified is the root for
the display.
<object> designates the folder path
This switch is used with a folder object. It chooses the designated folder as the starting point
(root) of the folder tree. (Ordinarily, DESKTOP is the root).
/select,<object>:
Specifies the folder to receive the initial focus.
If "/select" is used, the parent folder is opened and the specified object is selected. Highlights
the designated folder and displays the contents of the parent folder in the right pane.
<object> designates the folder path
'-------------------------------------------------------------------------------------
cependant, il se peut que je ne connaisse pas le nom exact du fichier ou qu e je souhaite obtenir toutes les possibilités en fonction de certains "mo ts-clés".
J'aurais voulu éviter les "sendkeys" mais pour le moment, cela résout m on problème :
ClipboardDemo ActiveCell.Value
Dim chemin: chemin = "C:UsersNicolasDocuments"
Shell "explorer .exe " & chemin, vbmaximizedfocus
Do Events
Application.Wait Now + 2 / 3600 / 24
SendKeys "^f"
Application.Wait Now + 1 / 3600 / 24
SendKeys "^v"
Application.Wait Now + 1 / 3600 / 24
SendKeys "{NUMLOCK}", True
Encore merci et à bientôt.
dans le nom du fichier, tu peux faire ceci. Mon exemple affiche dans l'explorateur
de fichiers Windows seulement les noms des fichiers qui ont la particule "de" comme
dans le nom "Calcul de math" qui ont une extension Excel.
Dans la ligne de code de la procédure Test, il s'agit d'adapter cela * de *.xl*" :
CheminEtFichier = "C:UsersTon profilDocuments* de *.xl*"
Si dans l'explorateur Windows, tu effectues une sélection multiple de fichiers
répondant au critère, la procédure affichera le nom de ces fichiers dans une boîte
de message.
'------------------------------------------
Sub test()
Dim CheminEtFichier As String, LesFichiers As String
CheminEtFichier = "C:UsersDenisDocuments* de *.xl*"
If Dir(CheminEtFichier) <> "" Then
BrowseFile CheminEtFichier, LesFichiers
Else
MsgBox "Aucun fichier ne correspond à la demande"
Exit Sub
End If
If LesFichiers <> "" Then
MsgBox "Nom des fichiers sélectionnés : " & vbCrLf & _
vbCrLf & LesFichiers
Else
MsgBox "Aucune sélection a été effectuée."
End If
End Sub
'------------------------------------------
Function BrowseFile(CheminEtTypeFichier, LesFichiers As String) As String
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Choisir le fichier BASE DE DONNÉES EXCEL"
'Empêcher la multi-sélection
.AllowMultiSelect = True
'Répertoire par défaut suivi du type de fichier par défaut
.InitialFileName = CheminEtTypeFichier
'Efface les filtres existants.
.Filters.Clear
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
If .SelectedItems.Count > 0 Then
For a = 1 To .SelectedItems.Count
LesFichiers = LesFichiers & _
Split(.SelectedItems(a), "")(UBound(Split(.SelectedItems(a), ""))) & vbCrLf
Next
End If
End With
End Function
'-------------------------------------------
Cela marche très bien et va me servir beaucoup, mais ... ¿ est-il possi ble de rechercher également dans les sous-dossiers ?
Si je comprends bien, la procédure n'effectue la recherche que dans :
CheminEtFichier = "C:UsersTon profilDocuments* de *.xl*" et non dans
CheminEtFichier = "C:UsersTon profilDocumentsDossier1* de *.xl*" (pa r exemple)
A bientôt,
Nicolas
Si tu veux afficher l'explorateur de fichiers avec seulement un type de fichier particulier,
l'explorateur ne peut pas afficher le contenu des fichiers de plus d'un répertoire à la fois.
Si tu désires obtenir la liste des fichiers qui répondent à un critère de recherche, mais sans
les afficher dans l'explorateur de fichiers, c'est possible... tu peux copier le résultat dans
une feuille de calcul.
Que veux-tu?
xls, doc, pdf... ?
Si c'est le cas, il n'est pas nécessaire de distinguer.
Par contre, j'aurais souvent besoin de pouvoir rechercher :
- dans les différents sous-dossiers possibles,
- avec plusieurs critères : "*calcul*" & "*math*" (par exemple).
L'affichage sur l'explorateur n'est pas "indispensable", mais si c'est poss ible ... merci encore pour ta patience.
Un clic sur le bouton...
Dans la première fenêtre, tu entres le chemin du répertoire qui t'intéresse
Exemple : C:UsersTon ProfilDocuments
Dans la seconde fenêtre, le classeur que tu recherches
Exemple du nom de classeur avec l'expression au moins classeur dans le nom
*classeur*.*
Regarde dans le module1 tu peux activer une ligne de code qui va t'afficher dans le résultat
tous les répertoires qui ont été scannés même si aucun fichier recherché n'a été trouvé.
"Nicolas" a écrit dans le message de groupe de discussion :
Lorsque tu mentionnes "un type de fichier particulier" tus veux dire :
xls, doc, pdf... ?
Si c'est le cas, il n'est pas nécessaire de distinguer.
Par contre, j'aurais souvent besoin de pouvoir rechercher :
- dans les différents sous-dossiers possibles,
- avec plusieurs critères : "*calcul*" & "*math*" (par exemple).
L'affichage sur l'explorateur n'est pas "indispensable", mais si c'est possible ... merci encore
pour ta patience.
Je vais voir tout ça un peu plus en détail et je te commente mes doutes ...
Merci beaucoup !
À bientôt.
Ce classeur corrige une coquille... et seuls les répertoires où il y a des fichiers correspondants
à la demande s'affichent dans la feuille.
Si tu veux rechercher seulement les fichiers ayant dans leur nom les
expressions "Calcul" et "Math" dans le nom du fichier, ceci est suffisant,
*Calcul*Math*
Si "Calcul" et "Math" sont des mots séparés dans le nom du fichier
* Calcul * Math *