Tu sais sans doute qu'il est possible de programmer Excel pour automatiser certaines taches répétitives.
J'ai donc écrit un petit programme dont voici le code ci-dessous :
Sub test()
Application.ScreenUpdating = False
Dim D As Range, F As Range, derCol As Integer, derLig As Long
For Each Sh In Sheets
If Sh.Name <> "Ref" Then
With Sh
Set D = Sheets("Ref").Columns(1).Find(Sh.Name, , xlValues, xlWhole, xlByColumns, xlNext)
Set F = Sheets("Ref").Columns(1).Find(Sh.Name, , xlValues, xlWhole, xlByColumns, xlPrevious)
derCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
If Application.WorksheetFunction.CountA(.Columns(1)) > 1 Then
derLig = .Range("A" & Rows.Count).End(xlUp).Row
.Cells(2, 1).Resize(derLig, derCol).Delete
End If
End With
With Sheets("Ref")
derCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
.Range(D, .Cells(F.Row, derCol)).Copy Destination:=Sh.Cells(2, 1)
End With
End If
Next Sh
Application.ScreenUpdating = True
End Sub
En gros, à chaque fois que tu quittes la feuille "Ref", ce programme est automatiquement lancé.
il a deux fonctions : la première est d'effacer toutes les données de chaque feuille autre que "Ref"; la seconde, de recopier toutes les lignes de la colonne A de la feuille "Ref" ayant le même nom que le nom de la feuille traitée.