XL 2013 Scanner dossier en cours

chandler282

XLDnaute Nouveau
Bonjour,

Je viens vers vous pour un petit coup de main.

En effet, j'ai trouvé une macro qui fonctionne plutôt bien mais que je souhaiterai améliorer en l'automatisant encore un peu plus.

En gros, on clic, on sélectionne le dossier parent, la macro scanne tous les dossiers à partir de là où elle se trouve et récupère l'ensemble des noms des dossiers et des fichiers en aval.

Jusque là c'est super.

Aujourd'hui j'aimerai faire exactement la même chose mais sans avoir besoin de sélectionner le dossier. Je clic et elle scanne automatiquement le dossier parent de là où le fichier se trouve. (Éventuellement une deuxième option pour qu'elle scanne seulement le dossier où le fichier se trouve sans remonter ni redescendre)

D'avance merci pour votre aide,
Bonne fin de journée



Nom de la feuille pour faire le test : "ARBORESCENCE"

-----------------------------------------------------------------------------
Dim ligne
Sub arborescenceRepertoire()

Application.Calculation = xlManual

racine = ChoixDossier() ' ou un répertoire C:\xxx e.g.
If racine = "" Then Exit Sub
Sheets("ARBORESCENCE").Activate
Range("b:d").ClearContents
Range("b1:d60000").EntireRow.Hidden = False
Set fs = CreateObject("Scripting.FileSystemObject")
Set dossier_racine = fs.GetFolder(racine)
ligne = 3
Lit_dossier dossier_racine, 1

End Sub

Sub Lit_dossier(ByRef Dossier, ByVal niveau)
Dim oFile
Dim CheminDuFichier As String
Application.ScreenUpdating = False
Cells(ligne, 2) = String(0 * (niveau - 1), " ") & Dossier.Name
ligne = ligne + 1
For Each d In Dossier.SubFolders
Lit_dossier d, niveau + 1
For Each oFile In d.Files
Cells(ligne, 3).Value = oFile.Name
CheminDuFichier = d & "\" & oFile.Name
ligne = ligne + 1
Next oFile
Next d
Application.ScreenUpdating = True
Columns(2).EntireColumn.AutoFit

End Sub

Function ChoixDossier()
If Val(Application.Version) >= 10 Then
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With
Else
Application.DisplayAlerts = False
ChoixDossier = InputBox("Répertoire?")
Application.DisplayAlerts = True
End If
End Function
 

chandler282

XLDnaute Nouveau
Bonsoir,

Merci pour votre retour rapide.

J'ai testé mais sans succès.

Voici mon exemple en pièce jointe.

En gros je souhaiterai qu'il fasse la même chose mais en automatique (dossier parent et selection puis scanne sans intervention humaine lol)

(mettre plusieurs fichiers dans le dossier pour le test)

Merci pour l'aide
 

Pièces jointes

  • TEST.xlsm
    25.5 KB · Affichages: 12

cp4

XLDnaute Barbatruc
Bonjour,

Une recherche sur le net t'aurait donnée ceci
VB:
Option Explicit

'https://excel.developpez.com/faq/?page=FichiersDir#BoucleFichiers
Sub BoucleFichiers()
    Dim Chemin As String, Fichier As String
 
    'Définit le répertoire contenant les fichiers
    Chemin = ThisWorkbook.Path & "\" '"C:\dossier\"
 
    'Boucle sur tous les fichiers xls du répertoire.
    Fichier = Dir(Chemin & "*.xls*")
    'Utilisez la syntaxe suivante pour boucler sur tous les types de fichiers:
    'Fichier = Dir(Chemin & "*.*")
 
    Do While Len(Fichier) > 0
        'écrit le résultat dans la fenêtre d'exécution (Ctrl+G).
        Debug.Print Chemin & Fichier
        Fichier = Dir()
    Loop
End Sub
Bon dimanche.
 

chandler282

XLDnaute Nouveau
Bonsoir,

Je viens de rentrer et j'ai cherché à faire fonctionner les deux propositions, malheureusement sans succès.

Pour la proposition de CP4 la macro se lance mais ne change rien au fichier.

Pour la proposition de VIARD j'ai une anomalie erreur 1004 et quand j’essaie d'activer "Visual basic For Application Extensibility 5.3" il me dit qu'il est déjà activé et me bloque.

Je ne dois clairement pas être au niveau,
En tout cas merci pour votre aide,
Bonne soirée à tous les deux
 

chandler282

XLDnaute Nouveau
Bonsoir,

J'ai en effet réussis à faire fonctionner la macro en faisant comme tu m'a indiqué. Par contre elle scanne tout le PC sans vraiment faire de distinction du dossier parent ou actuel.
De plus elle boucle sans arrêt et recommence la même chose encore et encore.

Merci,
Bonne soirée
 

cp4

XLDnaute Barbatruc
Bonsoir,

J'ai en effet réussis à faire fonctionner la macro en faisant comme tu m'a indiqué. Par contre elle scanne tout le PC sans vraiment faire de distinction du dossier parent ou actuel.
De plus elle boucle sans arrêt et recommence la même chose encore et encore.

Merci,
Bonne soirée
Bonjour,

tu l'as mal utilisé. non la boucle s'arrête une fois que tous les fichiers sont répertoriés.
Exécute le code et tu auras le résultats en feuille1.
Sinon, c'est que je n'ai rien compris à ton problème.

bonne journée.
 

Pièces jointes

  • chandler282.xlsm
    18.3 KB · Affichages: 9

chandler282

XLDnaute Nouveau
Bonjour,

J’étais en déplacement et je n’ai pas pu regarder avant.
Je viens de regarder la fonction et malheureusement cela ne répond que partiellement à mon besoin (en tout cas je garde cette information qui pourra sans aucun doute me resservir)

Initialement, mon projet était d’avoir 1 fichier CENTRAL avec des formules et des croisements de données, + 1 fichier individuel de saisie que l’on puisse dupliquer en 2, 3, 4, et jusqu’à 20 fichiers, et ce selon le nombre de personnes qui vont travailler ensemble dans ce répertoire.
Lorsque l’on ouvre le fichier central pour la première fois (après avoir par exemple créé 15 fichiers individuels), on clic sur la macro, ça scanne le dossier, ça trouve les 15 fichiers et ça crée automatiquement les liens vers ces 15 fichiers.
Lors des ouvertures suivantes, les liens créés ainsi permettront donc de rapatrier automatiquement, et surtout très rapidement, les données et donc les statistiques « instantanées » du pôle.
Je choisi ce modèle en vue d’éviter au maximum les manipulations pour l’utilisateur final car les niveaux ne sont pas du tout homogènes.

Je souhaitai donc automatiser cette macro afin qu’elle fasse la même chose qu’aujourd’hui mais sans avoir besoin de cliquer. A l’ouverture du fichier tout ce fait tout seul et pas de manipulation inutile.

Merci pour votre aide,
Bonne journée
 

Discussions similaires

Réponses
19
Affichages
2 K