Option Explicit
Sub Lister_les_cellules_nommees()
Dim Nom As Name
Dim DL As Long
Dim Colonne_Depot As Integer
Colonne_Depot = 1
For Each Nom In ThisWorkbook.Names
DL = Cells(65536, Colonne_Depot).End(xlUp).Row
If Cells(DL, Colonne_Depot).Value = "" Then
Cells(DL, Colonne_Depot).Value = Nom.Name
Else
Cells(DL + 1, Colonne_Depot).Value = Nom.Name
End If
Next
End Sub
Sub Copier_les_cellules_nommees()
Dim Nom As Name
Dim Mon_Range As Range
Dim DL As Long
Dim Colonne_Depot As Integer
Colonne_Depot = 1
For Each Nom In ThisWorkbook.Names
On Error Resume Next
Set Mon_Range = Nom.RefersToRange
DL = Cells(65536, Colonne_Depot).End(xlUp).Row
If Cells(DL, Colonne_Depot).Value = "" Then
Mon_Range.Copy Cells(DL, Colonne_Depot)
Else
Mon_Range.Copy Cells(DL + 1, Colonne_Depot)
End If
Next
End Sub
Sub Macro1()
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim pn As Name 'déclare la variable pn (Plage Nommée)
Dim o As String 'déclare la variable o (onglet)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Set cs = ThisWorkbook 'définit le classeur source
Set cc = Workbooks("Classeur_Cible.xls") 'définit le classeur source (à adapter à ton cas)
For Each pn In cs.Names 'boucle sur toutes les plages nommées du classeur source
With Range(pn) 'prend en compte la plage nommée
o = Range(pn).Worksheet.Name 'définit l'onglet de la plage nommée
Set dest = cc.Sheets(o).Range(pn) 'définit la cellule de destination
.Copy dest 'copie la plage nommée et la colle dans la cellule de destination
End With 'fin de la prise en compte de la plage nommée
Next pn 'prochaine plage nommé de la boucle
End Sub