Importer nom des fichiers des sous dossiers + ajouter d'autres

Bonjour à tous,

Ma version : Microsoft Office Professionnel Plus 2016

Dans un premier temps :

Voici mon programme pour afficher les fichiers d'un dossier sur une feuille dans mon fichier macro

Il fonctionne très bien à la différence que :

Si demain je veux ajouter des fichiers dans le dossier

il faudra refaire une analyse via ma macro mais je ne voudrais pas qu'il recommence à zéro mais qu'il vérifie ce qui n'apparait pas dans ma macro et qu'il les rajoute. à la fin.

Dans un deuxième temps :

J'aimerais qu'il analyse PAS (comme dans mon programme ci-dessous) le dossier principale, mais uniquement les sous dossiers.

exemple :

C:\Analyse

C:\Analyse\DossierA

C:\Analyse\DossierB

C:\Analyse\DossierC

Sub ListeDatafiles()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1 'j'enregistre la position du départ (c'est pour d'autres options dans mon programme)  
If Ligne <= 2 Then Ligne = 3 ' Ligne 3 Car j'ai figé les deux premières lignes pour y glisser mes boutons macros
Sheets("Options").Range("C3").Value = Ligne 'il va enregistrer une position
    With Worksheets("Accueil")
        repertoire = Sheets("Options").Range("C5").Value & "\" (nom du dossier)
        nf = Dir(repertoire & "*.xlsx")
        Range("A" & Ligne).Select
        Do While nf <> ""
            .Cells(Ligne, 1).Select
            ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=repertoire & "/" & nf, TextToDisplay:=nf 'C'est bien avec les liens
            Ligne = Ligne + 1
            nf = Dir
        Loop
    End With
Sheets("Options").Range("C4").Value = Ligne - 1 'il enregistre la positions d'arrivée
'decoupage 'd'autres macros
'Importer'd'autres macros
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Merci pour votre aide

bonjour,

si l'on utilise un tableau, on n'a pas besoin de "ligne", donc c'est plus facile.

33jefekoi.xlsb (24.17 Ko)
Sub MesFichiers()
     Monfiltre = Sheets("Options").Range("C5").Value & "\*xlsx"     '(nom du dossier)
     s = "Dir " & Replace(Monfiltre, " ", """ """) & " /b /s"    '--> PRECAUTION : pour les espaces, ajoute de " " autour !!!!!
     myfiles = Split(CreateObject("wscript.shell").Exec("cmd /c " & s).StdOut.ReadAll, vbCrLf)      'array avec tous les files
     If UBound(myfiles) = -1 Then
          MsgBox "il n'y a pas de fichiers comme ca"     'aucun
     Else
          MsgBox Join(myfiles, vbLf), , "liste de fichiers"

          Set sh = Sheets("Accueil")     'cette feuille
          With sh.ListObjects("TBL_Fichiers")     'tableau dans cette feuille
               arr = .ListColumns("Fichier").DataBodyRange.Value     'tous les fichiers connus -> array
               For i = 0 To UBound(myfiles)     'boucles des fichiers trouvés
                    If Len(myfiles(i)) > 0 Then     'longeur>0
                         r = Application.Match(myfiles(i), arr, 0)     'fichier trouvé, était-il déjà dans le tableau ?
                         If Not IsNumeric(r) Then     'NO
                              With .ListRows.Add.Range.Range("A1")     'ajoutez !
                                   .Value = myfiles(i)     'le nom
                                   sh.Hyperlinks.Add Anchor:=.Cells(1), Address:=.Value, TextToDisplay:=.Value  'le hyperlink
                              End With
                         End If
                    End If
               Next
          End With
     End If
End Sub

Merci à toi j'étais justement en train de tester via Power Query

Un peu dans le même principe :)

Merci pour ton aide

ok, succes

Bonjour

Hé les gars, pensez un peu à déclarer vos variables dans vos codes....
Ne rien déclarer revient mettre tout en Variant qui est la plus mauvaise variable à utiliser

Crdlt

bonjour,

"option explicit" veut dire que c'est une option.

Chez moi c'est un choix explicit d'utiliser les declarations comme sorte de "correction orthographique glorifiée". Il y a des pro et des contra pour déclarer tout et je suis persuadé qu'il faut le faire comme débutant, mais après un certain temps, cette obligation est moins nécessaire.

Ca fait >10 ans que j'utilise VBA et alors, les dernières années, apparament, je suis paresseux, Non !

Consulter d'autres sites, c'est pas un choix personnel.

je suis persuadé qu'il faut le faire comme débutant, mais après un certain temps, cette obligation est moins nécessaire.

Sans polémiquer je dirais que c'est plutôt le contraire.
Débutant on ne le fait pas par méconnaissance mais si on est un connaisseur, le faire me parait normal et cela reste une bonne pratique... enfin pour moi et si je m'en réfère à ceux qui m'ont conseillés il y a une vingtaine d'années mais aussi aux documentations existantes sur le sujet.

Après chacun fait comme il veut mais en les déclarant on est aussi plus efficace au niveau des ressources mémoire et on évite aussi les erreurs
Vis à vis d'un débutant ne vaut-il pas mieux lui conseiller d'apprendre à ne pas oublie de les déclarer. Cela reste une base de tout bon développeur et le premier commandement en programmation.

apparament, je suis paresseux, Non !

Je ne me permettrait absolument pas de penser cela.

Bonjour le fil,

Je ne suis pas d'accord avec Dan (pour une fois).. Je pense effectivement BsAlv que vous êtes fainéant...
mais vu votre grand âge avancé (de ce que je lis ici ou là) je pense que ça peut être logique

Comme le disais si bien l'ami Pierre FAUCONNIER " il me semble utile de placer certains garde-fous pour éviter les erreurs et les pertes de temps"

Mais comme le dis aussi l'ami Dan, chacun fait comme il veut

" il me semble utile de placer certains garde-fous pour éviter les erreurs et les pertes de temps"

D'accord,
c'est pourquoi j'utilise déclarer comme "correction orthographique glorifiée" et alors ils sont de type "variant".
Seulement dans des cas rares, je déclare un range, worksheet, workbook, ... .
C'est un choix personnel et je ne suis pas seul dans ce cas, mais "des goûts et des couleurs, on ne discute pas"

Mon grand défaut je dois le reconnaitre est de rarement déclarer les variables.

Rechercher des sujets similaires à "importer nom fichiers dossiers ajouter"