Autres Faire une recherche de sous-dossiers Windows (pas de fichiers) dans un dossier précis à partir de son nom contenu dans une cellule

  • Initiateur de la discussion Initiateur de la discussion Michou9
  • 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 !

Michou9

XLDnaute Occasionnel
Bonjour à tous
J'ai un fichier Excel (environ 500 lignes actuellement)
Dans la colonne A sont contenus des noms de sous dossiers
Je souhaiterais pouvoir faire une recherche de ces sous-dossiers Windows dans un dossier précis à partir de ces noms contenus dans les cellules de cette colonne
Les noms de ces sous-dossiers sont assez long
Je suis sous Excel 2007
Je ne sais pas si c'est réalisable ?
Je viens chercher de l'aide
Merci par avance
 
Solution
Bonsoir @Michou9

Avec votre fichier en Poste #5
VBA sans Module de classe.

VB:
Option Explicit
Option Compare Text

Sub Main()
' Procédure VBA :
' A1 = le chemin complet du dossier générale
' B2 = le chemin complet du (nom du dossier exact en A20) qui noyer dans l arborescence du dossier générale
' B2 = le Nom du dossier exact en A20 s'ouvrent automatiquement
' Recherche :
' A20 = Le Nom du dossier Exact (qui noyer dans l'arborescence du dossier générale)
    Application.ScreenUpdating = False
  
    Dim F1 As Worksheet
    Dim DossierRacine As String
    Dim DossierCherche As String
    Dim CheminTrouve As String
  
    Set F1 = Worksheets(ActiveSheet.Name)
  
    ' Récupération des paramètres
    DossierRacine = F1.Cells(1...
Si ce n'est pas compliqué, je souhaiterais avoir à droite
donc dans la colonne B, directement le nom du nom avec le chemin, sans avoir à cliquer dessus
Dans ce cas autant mettre le chemin d'accès complet en colonne A, le code est plus simple :
VB:
Option Compare Text 'la casse est ignorée
Dim chemin$, fso As Object, a$(), n& 'mémorise les variables

Sub CheminDossierGeneral()
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez le Dossier Général"
    If .Show = False Then End
    [B10] = .SelectedItems(1) 'stockage en B10
End With
End Sub

Sub CheminsDossiers()
If fso Is Nothing Then
    chemin = [B10]
    If Replace(Dir(chemin, vbDirectory), ".", "") = "" Then MsgBox "Le chemin en B10 n'est pas valide !", 48: Exit Sub
    Set fso = CreateObject("Scripting.FileSystemObject")
End If
CheminsDossiersRecursive chemin
With [A12] '1ère cellule de destination
    If n Then .Resize(n) = Application.Transpose(a)
    .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
Set fso = Nothing
Erase a: n = 0
End Sub

Sub CheminsDossiersRecursive(NomComplet$)
Dim sf As Object
For Each sf In fso.GetFolder(NomComplet).SubFolders
    If InStr(sf.Name, "€") Then
        ReDim Preserve a(n)
        a(n) = sf.Path
        n = n + 1
    End If
    CheminsDossiersRecursive sf.Path
Next sf
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [A12].Resize(Rows.Count - 11), Me.UsedRange) Is Nothing Then Exit Sub
Cancel = True
If Replace(Dir(Target, vbDirectory), ".", "") = "" Then MsgBox "Le chemin n'est pas valide !", 48: Exit Sub
Shell "explorer.exe """ & Target & """", vbNormalFocus 'ouvre le dossier
End Sub
 

Pièces jointes

- 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
3
Affichages
868
Retour