Comment exporter les cellules nommées d'un classeur" A" dans classeur "B"

BIROULIG

XLDnaute Nouveau
Bonjour,

Je voudrais récupérer toutes les cellules nommées qui se trouve dans un classeur pour les mettre dans un autre classeur.

Merci

BIROULIG
 

Etienne2323

XLDnaute Impliqué
Re : Comment exporter les cellules nommées d'un classeur" A" dans classeur "B"

Salut Biroulig,
voici une propositon. Je t'ai monté 2 macros. La première te permets de lister toutes les cellules nommées tandis que la 2e te permets de les copier ailleurs. À adapter.

VB:
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

VB:
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

Sans fichier exemple, difficile pour moi de te donner mieux.

Cordialement,

Étienne
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comment exporter les cellules nommées d'un classeur" A" dans classeur "B"

Bonjour le fil, bonjour le forum,

Si le nom des onglets des deux classeurs est identique, la macro ci-dessous récupère les plages nommées du classeur Source et les place au même endroit dans le classeur Cible :
Code:
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
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou