Je dispose de Noms dans un gestionnaire de noms dans mon classeur A et je voudrais les avoir dans mon classeur B
En fouillant un peu partout sur internet, j'ai trouvé cette formule qui semble fonctionner pour d'autres mais pas chez moi !
Pouvez m'éclairer sur ce problème.
Voici la formule : (je précise que read_excel_file_with_python.xlsx est mon classeur A dans lequel se trouve mes noms déjà défini)
VB:
Sub Test()
Call ListeNomsGestionnaire(Workbooks("read_excel_file_with_python.xlsx"))
End Sub
Sub ListeNomsGestionnaire(WB As Workbook):
Dim WS As Worksheet
Dim Nom As Name
Dim Tbl As ListObject
Dim Cellule As Range
Set Cellule = ActiveCell
'Liste des noms
For Each Nom In WB.Names
Cellule.Value = Nom.Name
Set Cellule = Cellule.Offset(1)
Next Nom
'Liste des tableaux structurés
For Each WS In WB.Worksheets
For Each Tbl In WS.ListObjects
Cellule.Value = Tbl.Name
Set Cellule = Cellule.Offset(1)
Next Tbl
Next WS
End Sub
après test, ce code, en créant d'abord le nom avec une référence existante, permet de copier les noms avec leurs références même si les objets n'existent pas dans le classeur cible.
Bien cordialement, @+
Code:
Sub Copier_Noms()
Dim Nom_Ref
On Error Resume Next
For Each Nom_Ref In ThisWorkbook.Names
ActiveWorkbook.Names.Add Name:=Nom_Ref.Name, RefersToR1C1:="='" & Sheets(1).Name & "'!R1C1"
ActiveWorkbook.Names(Nom_Ref.Name).RefersToR1C1 = Nom_Ref.RefersToR1C1
Next
End Sub
Ce code copiera les noms du classeur contenant la macro dans le classeur actif, mais cela suppose que les objets référencés par les noms existent aussi dans le classeur cible.
Bien cordialement, @+
VB:
Sub Copier_Noms()
Dim Nom_Ref
On Error Resume Next
For Each Nom_Ref In ThisWorkbook.Names
ActiveWorkbook.Names.Add Name:=Nom_Ref.Name, RefersToR1C1:=Nom_Ref.RefersToR1C1
Next
End Sub
après test, ce code, en créant d'abord le nom avec une référence existante, permet de copier les noms avec leurs références même si les objets n'existent pas dans le classeur cible.
Bien cordialement, @+
Code:
Sub Copier_Noms()
Dim Nom_Ref
On Error Resume Next
For Each Nom_Ref In ThisWorkbook.Names
ActiveWorkbook.Names.Add Name:=Nom_Ref.Name, RefersToR1C1:="='" & Sheets(1).Name & "'!R1C1"
ActiveWorkbook.Names(Nom_Ref.Name).RefersToR1C1 = Nom_Ref.RefersToR1C1
Next
End Sub
après test, ce code, en créant d'abord le nom avec une référence existante, permet de copier les noms avec leurs références même si les objets n'existent pas dans le classeur cible.
Bien cordialement, @+
Code:
Sub Copier_Noms()
Dim Nom_Ref
On Error Resume Next
For Each Nom_Ref In ThisWorkbook.Names
ActiveWorkbook.Names.Add Name:=Nom_Ref.Name, RefersToR1C1:="='" & Sheets(1).Name & "'!R1C1"
ActiveWorkbook.Names(Nom_Ref.Name).RefersToR1C1 = Nom_Ref.RefersToR1C1
Next
End Sub