IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-03] Lancer la boite de recherche Windows


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut [E-03] Lancer la boite de recherche Windows
    Bonjour à tous (et bonne année ;-)),

    J'aimerais, depuis Excel 2003, lancer la boite de recherche par défaut Windows (rechercher un fichier ou un dossier sur le disque dur) avec les champs "Nom de fichier" et "Répertoire cible" de renseignés par mon script.

    Je pense qu'il faut utiliser une API, mais je ne sais pas par ou commencer.

    Avez vous une idée ?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir, je ne sais trop ce que tu veux

    Lancer la boite de dialogue Rechercher de Windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
      'API
    Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
     
    Private Const VK_LWIN = 91 ' Left Windows key
    Private Const VK_F = 70
    Private Const Key_Down = 0
    Private Const Key_Up = 2
    Sub Recherche()
        Call keybd_event(VK_LWIN, 0, Key_Down, 0) ' Appui sur touche Windows
        Call keybd_event(VK_F, 0, Key_Down, 0)    ' Appui sur touche F
        Call keybd_event(VK_F, 0, Key_Up, 0)      ' Relachement de la touche F
        Call keybd_event(VK_LWIN, 0, Key_Up, 0)   ' Relachement de la touche Windows
    End Sub
    Dans ce cas, je n'ai pas mieux pour l'instant.

    Sinon, tu peux toujours jeter un œil ici

    Cordialement

  3. #3
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bonjour Fred,

    Merci pour la rapidité de ta réponse.

    Oui, c'est exactement ce que je veux... Lancer la boite de dialogue "Recherche des fichiers ou des dossiers" de Windows.
    Ton script lance bien la boite que je désire, mais j'aimerais qu'il se positionne sur le choix "Tous les fichiers et tous les dossiers" et qu'il renseigne les zones "Nom de fichier" et "Rechercher dans".

    De façon à que je n'ai plus qu'à cliquer sur le bouton "Rechercher" après l'exécution de la macro si les paramètres renseignés dans les zones me conviennent.

    J'ai essayé de rajouter ça à ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        ' Choisir "Tous les fichiers et tous les dossiers" Win+H
        DoEvents
        Sleep 2000
        Call keybd_event(VK_LWIN, 0, Key_Down, 0) ' Appui sur touche Windows
        Call keybd_event(VK_H, 0, Key_Down, 0)    ' Appui sur touche F
        Call keybd_event(VK_H, 0, Key_Up, 0)      ' Relachement de la touche F
        Call keybd_event(VK_LWIN, 0, Key_Up, 0)   ' Relachement de la touche Windows
    Mais ca ne fonctionne pas...
    Je pense que, même si la boite passe devant, il effectue cette simulation de touche sur Excel.

    Et, en admettant que ça fonctionne... Comment je pourrait renseigner les zones de textes ?

    N'y a t-il pas moyen de faire appel à un éventuel "c:\windows\rechercher.exe" avec des paramètres ?

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, Dacid,

    Je ne sais pas quelle est la finalité exacte, mais "sens" qu'il y a beraucoup mieux à faire que de t'y prendre ainsi.
    Explique :
    - Chercherais-tu simplement à déterminer si, dans un répertoire à spécifier (et ses sous-dossiers) , existe(nt) déjà un/des dossier(s) portant un nom à spécifier et/ou un/des fichier(s) portant ce même nom + une extension (et dans ce cas : quelle qu'elle soit ou à spécifier également ?) ?
    - Si oui :
    --- veux-tu simplement savoir s'ils existent (avec leur nombre, éventuellement) ou veux-tu également en connaître le chemin complet ?
    --- si tu veux en connaître le chemin complet : dois-tu également pouvoir utiliser dynamiquement ce chemin complet (ce que ne te permets pas de faire l'utilisation simple de la fenêtre de recherche de l'explorateur) ?
    C'est en fonction de tes réponses précises à ces questions précises que je serai en mesure d'écrire le code dont tu as besoin.

  5. #5
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bonjour ucfoutu,

    Non, je veux vraiment passer par cette boite de dialogue de recherche Windows avec des zones de texte pré renseignées.
    Pour info, c'est pour du traitement de fichiers en masse et il y a tellement de cas différents qu'on ne peux faire un script personnalisé.

    J'ai ca pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Rechercher4(rep As String)
        Dim app As Double
     
        'RetVal = ShellExecute(0, "Open", "explorer " & rep, ByVal 0&, 0&, 6)
        app = Shell("explorer " & rep, vbNormalFocus)
        DoEvents
        'Sleep 500
        Call keybd_event(vk_ctrl, 0, Key_Down, 0) ' Appui sur touche Windows
        Call keybd_event(vk_f, 0, Key_Down, 0)    ' Appui sur touche H
        Call keybd_event(vk_f, 0, Key_Up, 0)      ' Relachement de la touche H
        Call keybd_event(vk_ctrl, 0, Key_Up, 0)   ' Relachement de la touche Windows
        DoEvents
        'Call keybd_event(VK_LWIN, 0, Key_Down, 0) ' Appui sur touche Windows
        Call keybd_event(VK_H, 0, Key_Down, 0)    ' Appui sur touche H
        Call keybd_event(VK_H, 0, Key_Up, 0)      ' Relachement de la touche H
        'Call keybd_event(VK_LWIN, 0, Key_Up, 0)   ' Relachement de la touche Windows
    End Sub
    Mais s'il me lance bien l'assistant de recherche dans l'explorateur, je n'arrive pas à sélectionner "Tous les fichiers et tous les dossiers"... La 2ème partie de mon code ne fonctionne pas.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Regarde quand même ce que ferait l'outil suivant :
    2 textboxes Textbox1 (pour le répertoire à "fouiller") Textbox2 (pour le nom à chercher) , une listbox List1 pour visualiser et un bouton Command1 pour exécuter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Command1_Click()
       Dim filtre As String, repertoire_a_fouiller As String
       repertoire_a_fouiller = Textbox1.Text '  exemple d:\monoutil\
       filtre = Textbox2.Text ' exemple : modeles
       List1.Clear
       fouillons repertoire_a_fouiller, filtre
    End Sub
     
    Sub fouillons(ByVal R As String, FD As String)
       Dim NF As String, NBR As Integer, chemin As String, i As Integer
       Me.MousePointer = vbHourglass
       If Right$(R, 1) <> "\" Then R = R & "\"
       NF = Dir$(R, vbDirectory): NBR = 1
       Do While NF <> ""
         If NF <> "." And NF <> ".." Then
           chemin = R & NF
           If GetAttr(chemin) And vbDirectory Then
             If NF Like FD Then List1.AddItem chemin
             fouillons chemin, FD
             NF = Dir$(R, vbDirectory)
             For i = 2 To NBR
               NF = Dir$
             Next
           Else
             If NF Like FD & ".*" Then List1.AddItem chemin
           End If
         End If
         NF = Dir$: NBR = NBR + 1
       Loop
       Me.MousePointer = vbDefault
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XP]effacer l'historique de la recherche windows ?
    Par ferradji dans le forum Windows XP
    Réponses: 8
    Dernier message: 14/12/2008, 21h54
  2. Gerer une recherche windows
    Par borislotte dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/05/2007, 15h44
  3. [Access]Re-creer la recherche windows
    Par borislotte dans le forum Access
    Réponses: 1
    Dernier message: 25/04/2007, 20h15
  4. [VBA - E] Controler recherche windows
    Par alex_elder1_1 dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 13/12/2006, 15h07
  5. Récupérer le contenu d'une boite de dialogue Windows en VB6
    Par DWade dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/06/2006, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo