TCD automatique en VBA
Invité
Bonsoir tout le monde!
J'aurai besoin d'un petit coup de main.
Pour commencer, mon fichier est lié à un disque réseau composé de dossier et sous-dossier.
Je souhaiterai savoir comment en utilisant ma macro "REFRESH" je peux faire en sorte que mes fichiers soient dans un TCD et que si un fichier est ajouter ou retirer du disque réseau, la tableau suit.
J'ai essayé avec "RefreshPivotTables" mais rien de concluant.
Merci d'avance, bonne soirée!
Je souhaiterai savoir comment en utilisant ma macro "REFRESH" je pouvoir actualiser mes fichiers et faire en sorte qu'ils soient dans un TCD et que si un fichier est ajouter ou retirer du disque réseau, la tableau suit.
J'aurai besoin d'un petit coup de main.
Pour commencer, mon fichier est lié à un disque réseau composé de dossier et sous-dossier.
Je souhaiterai savoir comment en utilisant ma macro "REFRESH" je peux faire en sorte que mes fichiers soient dans un TCD et que si un fichier est ajouter ou retirer du disque réseau, la tableau suit.
J'ai essayé avec "RefreshPivotTables" mais rien de concluant.
Merci d'avance, bonne soirée!
Sub REFRESH()
ActiveSheet.Range("A1:C3000").Clear
TestListeFichiers
End Sub
Sub TestListeFichiers()
Dim Chemin As String
Dim Dossier As String
Dim SousDos As String
' Chemin initial
Chemin = "K:\DOCUMENTATION\Architecture documentaire\"
If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
' Sous-dossier selon le nom de l'onglet
SousDos = ActiveSheet.Name
If Right(SousDos, 1) <> "\" Then SousDos = SousDos & "\"
' Dossier à scanner
Chemin = Chemin & SousDos
'Appelle la procédure de recherche des fichiers
ListeFichiers Dossier
'Ajuste la largeur des colonnes A:E en fonction du contenu des cellules.
Columns("A:C").AutoFit
MsgBox "Terminé"
End Sub
Sub ListeFichiers(Repertoire As String)
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File
Dim i As Long
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
'Récupère le numéro de la dernière ligne vide dans la colonne A.
i = Range("A65536").End(xlUp).Row + 1
'Boucle sur tous les fichiers du répertoire
For Each FileItem In SourceFolder.Files
'Inscrit le nom du fichier dans la cellule
Cells(i, 1) = FileItem.Name
'Ajoute un lien hypertexte vers le fichier
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
Address:=FileItem.ParentFolder & "\" & FileItem.Name
'Indique la date de création
Cells(i, 2) = FileItem.DateCreated
'Nom du répertoire
Cells(i, 3) = FileItem.ParentFolder
Next FileItem
'--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
For Each SubFolder In SourceFolder.subfolders
ListeFichiers SubFolder.Path
Next SubFolder
End Sub
Public Sub RefreshPivotTables()
Dim ws As Worksheet, pt As PivotTable
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = "ActiveSheet" Then
For Each pt In ws.PivotTables
pt.RefreshTable
'ou
'pt.PivotCache.Refresh
Next pt
End If
Next ws
End Subon fichier est lié à un disque réseau composé de dossier et sous-dossier.Je souhaiterai savoir comment en utilisant ma macro "REFRESH" je pouvoir actualiser mes fichiers et faire en sorte qu'ils soient dans un TCD et que si un fichier est ajouter ou retirer du disque réseau, la tableau suit.
Bonjour
Pour cela PowerQuery, intégré à Excel 2016 et +, est plus simple et plus adapté que VBA