XL 2019 Copier Coller les Noms d'un Gestionnaire de Noms dans un nouveau classeur

Bubu29

XLDnaute Nouveau
Bonjour,

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

CDLT
Bruno
 
Solution
re,

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

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Bubu29, le forum

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
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re,

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
 
Dernière édition:

Bubu29

XLDnaute Nouveau
re,

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
Merci beaucoup !
 

Discussions similaires

Réponses
49
Affichages
880
Réponses
6
Affichages
268

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh