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

Recherche dossier

  • Initiateur de la discussion Initiateur de la discussion ptibaz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ptibaz

XLDnaute Junior
Bonjour a tous,

je n'arrive pas a trouver un moyen de rechercher un répertoire et de l'ouvrir.
j'ai essayé " Filesearch " mais c'est adapté à la recherche de fichier.

comment faire pour chercher un dossier a partir du contenu d'une cellule?
il faut avertir si la recherche est nulle.

merci d'avance pour vos conseils.
 
Re : Recherche dossier

Bonjour ptibaz,

FileSearch ne fonctionne plus sur les versions 2007 et plus, donc déconseillé de toutes façons.
Le contenu de la cellule c'est le nom du dossier recherché ?
Il faut pouvoir choisir le disque ou le dossier de départ pour la recherche ?

Dans l'absolu, il faut s'orienter vers les objets folders et éventuellement drives de FileSystemObject
 
Re : Recherche dossier

Bonjour
VB:
Z = Dir("*", vbDirectory)
While Z <> ""
   If GetAttr(Z) = vbDirectory And Z > ".." Then
      ...
      End If
   Z = Dir
   Wend
Marchait bien d'habitude !
Encore un truc qui marche plus sur les version d'Excel que je n'aurai jamais c'est décidé ?!
À+
 
Dernière édition:
Re : Recherche dossier

Bonjour ptibaz, Tototiti, Dranreb


Encore un truc qui marche plus sur les version d'Excel que je n'aurai jamais c'est décidé ?!

Normalement le Dir est supporté sur les versions XL2007 ou XL2010.

C'est sur qu'on est un peu perdu au début (quoique tout à l'heure encore je cherchais les listes personnalisées sur Xl2007, cela m'a bien pris 10 minutes pour les trouver), mais, bon s'y fait assez vite 😱.

Ah mais Dranreb, c'est pas mal ça (cela me plaît bien ton code 🙂):

Sub test()
Z = Dir("*", vbDirectory)
i = 1
While Z <> ""
If GetAttr(Z) = vbDirectory And Z > ".." Then
End If
Z = Dir
Cells(i, 1) = Z: i = i + 1
Wend
End Sub
 
Dernière édition:
Re : Recherche dossier

Re

pour etre + précis, je cherche un dossier nommé "*" & active.selection & "*" dans le répertoire "C:\test\"

Cela ne veut rien dire 😕

Envoie plutôt un fichier avec ce que tu cherches et la structure de ton dossier avec un exemple de quelques dossiers et sous-dossiers sur Ton C:\test.
 
Re : Recherche dossier

Bonjour Dranreb, Bonjour Michel,
Re,

Sinon, pour trouver tous les dossiers (et sous-dossiers) sur tous les disques, ça devrait donner ça

Code:
Public ListeDoss() As String

Sub InitDoss()
Dim FSO, Lecteur
    ReDim ListeDoss(1 To 1)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'For Each Lecteur In FSO.Drives
    '    If UBound(ListeDoss) > 1 Then ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
    '    ListeDoss(UBound(ListeDoss)) = Lecteur.DriveLetter & ":\"
    '    ChercheDossiers (Lecteur.DriveLetter & ":\")
    'Next
    ChercheDossiers ("C:\")
    For i = 1 To UBound(ListeDoss)
        Range("A" & i).Value = ListeDoss(i)
    Next i
End Sub


Sub ChercheDossiers(AdrDoss As String)
Dim FSO, Doss, SousDoss
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Doss = FSO.GetFolder(AdrDoss)
    On Error GoTo Fin
    For Each SousDoss In Doss.SubFolders
        ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
        ListeDoss(UBound(ListeDoss)) = SousDoss.Path
        ChercheDossiers (SousDoss.Path)
    Next
    On Error GoTo 0
Fin:
End Sub
en fait, là ça ne cherche que sur le lecteur C et c'est déjà long
Pour que ça cherche sur tous les lecteurs, mettre la ligne

ChercheDossiers ("C:\")
en commentaire

et enlever les apostrophes des autres lignes en commentaire...
 
Dernière édition:
Re : Recherche dossier

Re, bonjour tototiti

A tester. Mais on ne va que dans un niveau de sous-dossier en reprenant le code de Dranreb 😱.

Tototiti: il faudra que je teste mais j'ai déjà une petite idée 🙂.
 

Pièces jointes

Dernière édition:
Re : Recherche dossier

excusez moi, je n'ai pas été très clair.

voici donc un exemple.
en colonne C , il y a des noms de client.

1) Quand je clique sur C3 (par exemple), je veux que ca m'ouvre le dossier "4-1 _ CHI ANNEMASSE" dans le répertoire C:\client (par exemple)

2) Si je clique sur C6 (CHAMBRE DE COMMERCE ET D'INDUSTRIE D'AJACCIO) un message d'alerte doit m'avertir que le dossier n'existe pas.

...
 

Pièces jointes

  • planning.xls
    planning.xls
    15.5 KB · Affichages: 43
  • planning.jpg
    72.5 KB · Affichages: 43
  • planning.xls
    planning.xls
    15.5 KB · Affichages: 46
  • planning.jpg
    72.5 KB · Affichages: 41
  • planning.xls
    planning.xls
    15.5 KB · Affichages: 47
  • planning.jpg
    72.5 KB · Affichages: 41
Re : Recherche dossier

Bonjour tout le monde,
en testant le code de tototiti🙂 cela fonctionne correctement.
Sur mon vieux portable :environ 14 sec.
En remplaçant le dernière boucle For...Next de
Code:
Sub InitDoss()
Dim FSO, Lecteur
    ReDim ListeDoss(1 To 1)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    t = Timer
    'For Each Lecteur In FSO.Drives
    '    If UBound(ListeDoss) > 1 Then ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
    '    ListeDoss(UBound(ListeDoss)) = Lecteur.DriveLetter & ":\"
    '    ChercheDossiers (Lecteur.DriveLetter & ":\")
    'Next
    ChercheDossiers ("C:\")
    For i = 1 To UBound(ListeDoss)
        Range("D" & i).Value = ListeDoss(i)
    Next i
    MsgBox Timer - t
End Sub
par
Code:
Range("D1:D" & UBound(ListeDoss)) = Application.Transpose(ListeDoss)
je passe à - de 7 sec.
Si cela peut vous servir...
A+
 
Re : Recherche dossier

Bonjour David 😉
Re,

Bien vu David, et petit complément 😀

Comme le fil est estampillé Toutes version, je me permet de faire référence au Wiki sur les tableaux (Merci à Zon)
https://www.excel-downloads.com/threads/vba-les-tableaux-le-ki-ki-de-zon.93353/
concernant les limites de Transpose jusqu'à Excel 2002 (5700 éléments), auquel cas le Wiki nous proposera d'autres solutions...

Sinon, ptibaz, les dossiers en question sont tous directement dans "C:\Client" ? ça n'est toujours pas clair pour moi
 
Re : Recherche dossier

Re Tototiti🙂,
Merci pour le lien. Concernant les limites de Transpose sur XL 2007, je n'ai pas trouvé d'infos. J'ai donc fait un test rapide et je bloque au-delà de ...65536 lignes.
Donc il y a de la marge🙄.
A+
 
Re : Recherche dossier

Sinon, ptibaz, les dossiers en question sont tous directement dans "C:\Client" ? ça n'est toujours pas clair pour moi[/QUOTE]


oui, les dossiers sont toujours au meme endroit, seulement je ne connais pas forcément le nom complet du dossier. D'ou ma demande initiale de faire une recherche à partir du contenu d'une cellule.

merci de continuer a m'aider...
 
Re : Recherche dossier

Bonjour à tous,

A mettre dans le code de la feuille contenant ta liste de clients

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Doss As String
    If Target.Column = 3 And Target.Count = 1 Then
        If Target.Value <> "" Then
            Cancel = True
            Doss = Dir("C:\Clients\*" & Target.Value & "*", vbDirectory)
            If Doss = "" Then
                MsgBox "Pas de dossier client trouvé"
            Else
                a = Shell("Explorer.exe " & Chr(34) & "C:\Clients\" & Doss & Chr(34), vbMaximizedFocus)
            End If
        End If
    End If
End Sub
Un double-clic sur le nom du client devrait ouvrir son dossier
 
Re : Recherche dossier

merci tototiti
Le seul probleme c'est que le nom de dossier doit correspondre exactement au contenu de la cellule.

Comment faire si le dossier s'appelle "1_4 (toto)" et que la cellule contienne "toto" uniquement ?

apres si ca marche ca sera nickel...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
317
Réponses
2
Affichages
150
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…