Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA recherche accélérée Windows explorer avec option

Nicu

XLDnaute Nouveau
Bonjour,

Je voudrais lancer l'explorateur Windows avec l'option "documents" pour accélérer la recherche, en alliant VBA et Shell.

Je ne trouve pas la commande correspondante.

Merci pour votre aide.

Sub OpenFindFile() '(Optional pFolder As String, Optional pFile As String, Optional pFindIn As String)
Set shellapp2 = CreateObject("Shell.Application")
pFolder = shellapp2.BrowseForFolder(0, "Sélectionner le dossier dans lequel les fichiers individuels sont enregistrés", 0).self.Path
Call ShellExecute(GetActiveWindow, "find", pFolder, vbNullString, vbNullString, SW_SHOW)
If pFile <> "" Then
SendKeys pFile, True
End If
If pFindIn <> "" Then
SendKeys "{TAB}" & pFindIn, True
End If
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nicu, et bienvenu sur XLD,
Je ne sais pas trop ce que vus voulez faire.
Mais il faut avant tout charger la librairie, donc faites précéder votre sub avec :
VB:
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
 

Nicu

XLDnaute Nouveau
...J'ai une définition publique de variables :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Const SW_SHOW = 5

Je voudrais afficher l'explorateur Windows, sélectionner l'option "rechercher", puis choisir l'option "documents", afin que la recherche soit plus rapide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Je ne comprends pas ce que vous voulez obtenir.
Essayez cette macro.
Ca ouvre une première fenêtre pour choisir le dossier puis ensuite ouvre l'explorateur sur le dossier choisi.
Mais au moins ça ne plante pas.
VB:
Sub OpenFindFile() '(Optional pFolder As String, Optional pFile As String, Optional pFindIn As String)
Set shellapp2 = CreateObject("Shell.Application")
On Error GoTo Fin
pFolder = shellapp2.BrowseForFolder(0, "Sélectionner le dossier dans lequel les fichiers individuels sont enregistrés", 0).self.Path
Shell Environ("WINDIR") & "\explorer.exe " & pFolder, vbNormalFocus
If pFile <> "" Then
SendKeys pFile, True
End If
If pFindIn <> "" Then
SendKeys "{TAB}" & pFindIn, True
End If
Fin:
End Sub
 

Nicu

XLDnaute Nouveau
Bonsoir
ouvrir l'explorateur sur mes documents
VB:
Sub test()
pfolder = Environ("userprofile") & "\Documents"
Shell Environ("WINDIR") & "\explorer.exe " & pfolder, vbNormalFocus
End Sub
Bonjour,
Mon code fonctionne.
Je cherche juste la commande permettant de faire une recherche avec option, pour accélérer la recherche sur le réseau local (voir copie d'écran ci-jointe).

J'ai cherché attentivement sur le net, et n'ai encore rien trouvé.
Cela m'étonnerait que ce ne soit pas possible...
Merci pour votre aide.
 

Pièces jointes

  • Explorateur Windows options.png
    219.3 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
a ben il fallait le dire alors tu veux lancer la recherche dans l'explorateur
dans ce cas là c'est
VB:
Sub test2()
    Dim pfolder$, searchQuery$, explorerCommand$

    pfolder = Environ("userprofile") & "\Documents" ' Chemin de base pour la recherche

    'exemple1:
    'searchQuery = ".xlsx" 'recherche tout les fichiers excel xlsx(sans macro)
    'exemple2
    searchQuery = ".png OR *.jpg" ' recherche tout les fichiers image png ou jpg

    ' concat de la commande la commande
    explorerCommand = "explorer.exe ""search-ms:query=" & searchQuery & "&crumb=location:""" & pfolder & """"

    ' on lance la commande la commande
    Shell explorerCommand, vbNormalFocus
End Sub



exemple d'autre recherche
Code:
Exemple de critères de recherche :

    Rechercher des fichiers modifiés  y a pas longtemps ou après une date
    searchQuery = "datemodified:>=01/01/2024"

    Rechercher des fichiers spécifiques par nom :
    searchQuery = "nomdufichier"

    Combiner plusieurs critères :
    searchQuery = "type:=.txt AND datemodified:>=01/01/2023"
 
Dernière édition:

Nicu

XLDnaute Nouveau
J'ai un code qui lance la recherche, il suffit de renseigner la zone adéquate dans l'explorateur :

VB:
'Macro permettant de lancer une recherche Windows dans un répertoire défini
Sub OpenFindFile() '(Optional pFolder As String, Optional pFile As String, Optional pFindIn As String)
Set shellapp2 = CreateObject("Shell.Application")
pFolder = shellapp2.BrowseForFolder(0, "choisir l'arborescence dans laquelle lancer la recherche", 0).self.Path
Call ShellExecute(GetActiveWindow, "find", pFolder, vbNullString, vbNullString, SW_SHOW)
If pFile <> "" Then
    SendKeys pFile, True
End If
If pFindIn <> "" Then
    SendKeys "{TAB}" & pFindIn, True
End If
End Sub

Variables :
Code:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
         ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Const SW_SHOW = 5

Ma demande concerne juste l'option "rechercher les documents", précision sur la copie d'écran jointe.
C'est un détail, mais cela pourrait permettre de multiplier par 10 le délai de recherche réseau...
Merci !
 

Pièces jointes

  • Explorateur Windows options.png
    274.5 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
re
alors!tu me pardonnera ma franchise hein
ton code est digne de la préhistoire
c'est une usine à gaz
je vois des sendkeys direct comme ça a partir de vba alors que tout le monde sait que c’a déactive le pavé et bien d'autres chose

Alors que je t'ai donné une chose simple propre qui va direct dans tes documents avec voir ci dessous
des bonus pour les variations

j'ai envie de te dire mon grand "Bon vent" et continue avec ta brouette

Patrick
 

Discussions similaires

Réponses
47
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…