Macro compilation de fichiers: comment integrer nom fichier?
Bonjour à tous,
J'ai une macro qui sert à compiler des fichiers.xls dans un seul fichier .xls. Ca marche bien.
Seulement, dans le fichier compilé, j'aimerais en plus faire apparaître le nom du fichier source relatif à la ligne compilée... (j'ai fait quelques tentatives sans succès...)
Est ce que quelqu'un sait comment faire?
D'avance, merci
Aline
voici le code que j'ai actuellement:
Sub regroupe()
Dim chemin As String ' classeur regroupé
Dim rep As String ' répertoire à traiter
Dim fic As String ' classeur regroupé
Dim ligne As Long ' ligne écriture
Dim nbc As Integer ' nombre de classeurs
Dim nbf As Integer ' nombre de feuilles
Dim nbl As Integer ' nombre de lignes
Dim c As Integer ' nombre de colonnes
Dim l As Long ' ligne lecture
Dim Wf As Worksheet ' feuille regroupement
Dim Wl As Worksheet ' feuille regroupée
rep = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
On Error GoTo fin
Set Wf = ThisWorkbook.ActiveSheet ' variable feuille groupe
Wf.Cells.ClearContents
nbc = 0: nbf = 0 ' initialisation variables
ligne = 1
fic = Dir(rep & "*.xlsx") ' recherche fichiers
While fic <> ""
If fic <> ThisWorkbook.Name Then
chemin = rep & fic ' chemin fichiers
Workbooks.Open chemin, 0 ' ouverture
Set Wl = ActiveWorkbook.Sheets(1)
nbl = Wl.UsedRange.Rows.Count
c = Wl.UsedRange.Columns.Count
If ligne > 2 Then l = 2 Else l = 1 ' une seule fois le titre
Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 1)
ligne = ligne + nbl - l + 1
nbf = nbf + 1
ActiveWorkbook.Close savechanges:=False ' Fermeture du classeur
nbc = nbc + 1
End If
fic = Dir
Wend
fin:
MsgBox nbc & " classeurs regroupés avec " & nbf & " feuilles et " & ligne & " lignes"
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Bonjour et bienvenu(e)
sans test et sans conviction
Rajoutes cette ligne dans ton code
c = Wl.UsedRange.Columns.Count
If ligne > 2 Then l = 2 Else l = 1 ' une seule fois le titre
Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 1)
Wf.Cells(ligne, c + 1).Resize(nbl).Value = fic
ligne = ligne + nbl - l + 1
nbf = nbf + 1
ActiveWorkbook.Close savechanges:=False ' Fermeture du classeur
nbc = nbc + 1
Bonjour, je débute complètement et j'ai voulu copier ce code mais j'imagine qu'il faut renseigner le chemin d'accès au répertoire quelque part ?
Mais où ? Sous quelle forme ?
Quoi d'autres dois-je renseigner sur la base de ce code pour l'appliquer à mes fichiers ?
Merci d'avance pour vos réponses.
Gaspa