1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Sub Transfert()
Application.DisplayAlerts = False 'Evite les messages d'Excel
Application.EnableEvents = False 'Evite l'exécution éventuelle de macros liées aux fichiers ouverts
ChDir ThisWorkbook.Path ' Répertoire application
nb = ActiveSheet.UsedRange.Rows.Count 'Compte le nombre de ligne de la feuille
Range("B" & nb + 1).Select
nf = Dir("fiche*.xlsm") ' Première fiche
MsgBox "Vous êtes en train de compiler le fichier " & nf
Do While nf <> ""
Workbooks.Open Filename:=nf
Sheets("Compil").Activate
nb_ligne = ActiveSheet.UsedRange.Rows.Count - 8 'Compte le nombre de ligne du fichier Compil
Range("B9:AX" & nb_ligne).Copy ' Copie les données de la feuille Compil
Windows("ma_feuille.xlsm").Activate
Sheets("Base").Activate
'Colle la mise en forme
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
'Colle les valeurs
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(nf).Activate
ActiveWorkbook.Close savechanges:=False
' Recopie le nom du fichier dans la première colonne
ActiveCell.Offset(0, -1) = nf
ActiveCell.Offset(nb_ligne + 1, 0).Select
nf = Dir() ' Fiche suivante
Loop
'Supprime l'extension du nom de fichier
Columns("A:A").Replace ".xlsm", ""
'Ajustement des colonnes
Cells.EntireColumn.AutoFit
'Supprime les lignes vides
For Lin = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Rows(Lin).Find("*") Is Nothing Then Rows(Lin).Delete
Next Lin
MsgBox "Compilation terminée"
Sheets("Execution").Activate
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub |
Partager