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 SubMerci pour votre aide
bonjour,
si l'on utilise un tableau, on n'a pas besoin de "ligne", donc c'est plus facile.
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 SubMerci à toi j'étais justement en train de tester via Power Query
Un peu dans le même principe :)
Merci pour ton aide
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
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.