Renommer une plage déjà nommée avant fusion de deux fichiers

bercud

XLDnaute Nouveau
Bonjour

je voudrais fusionner deux fichiers qui ont chacun des plages nommées portant les mêmes noms exemple "Clients". Dans chacun des fichiers, il y a des formules RechercheV faisant référence à ces zones nommées "=RECHERCHEV(A2;Clients;2;FAUX)".

Quand je transfére(par un déplacement des onglets) l'un dans l'autre, Excel me dit que "le nom existe déjà dans le fichier destination....voulez vous utiliser ce nom existant".... Si je reponds OUI.. je perds la zone nommée d'origine. Si je reponds NON...cela se complique


Question : Y aurait-il un moyen simple, avant l'importation de l'un des 2 fichiers dans l'autre, de renommer le nom "Clients" par "Clients_FR" par exemple et de remplacer facilement dans tous les onglets et dans toutes les formules, cette plage nommée par son nouveau nom.

J'ai essayé cette macro ci-dessous: elle renomme correctement la zone...mais elle ne remplace pas l'ancienne occurence dans les formules (qui utilisent cette zone nommée) par son nouveau nom. il s'affiche "#nom?"

Sub Renommer_Zone()
Dim Ancien_Nom
Dim Nouveau_Nom
Ancien_Nom = Application.InputBox("Entrez l ancien Nom...")
Nouveau_Nom = Application.InputBox("Entrez le nouveau Nom...")
ActiveWorkbook.Names(Ancien_Nom).Name = Nouveau_Nom
ActiveWorkbook.Names(Ancien_Nom).Delete
End Sub

Merci de votre aide.

Salutations.
 

Pièces jointes

  • Noms_Clients_FR.xls
    23 KB · Affichages: 55
  • Noms_Clients_GB.xls
    31 KB · Affichages: 81
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Renommer une plage déjà nommée avant fusion de deux fichiers

Bonsoir Bercud, bonsoir le forum,

Je te porpose la macro ci-dessous qui modifie les plages nommées ainsi que les formules utilisant ces plages nommées (à effectuer sur l'un des deux fichiers avant la fusion) :
Code:
Sub Macro1()
Dim nom As Name 'déclare la variable nom

For Each nom In Names 'boucle sur toutes les plages nommées
    'remplacement du nom de la plage nommée dans les cellules
    Cells.SpecialCells(xlCellTypeFormulas).Replace What:=nom.Name, Replacement:=nom.Name & "_FR", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False
    'remplacement des plages nommées
    nom.Name = nom.Name & "_FR" 'modifie le nom de la plage nommée
Next nom 'prochaine plage nommée de la boucle
End Sub
 
Dernière édition:

bercud

XLDnaute Nouveau
Re : Renommer une plage déjà nommée avant fusion de deux fichiers

Bonjour Robert,

Un grand merci pour ce morceau de code qui fonctionne parfaitement.
C'est exactement ce dont j'avais besoin.

Merci aux membres de ce forum.

Salutations.



Voici mon code final :

Sub Remplacement_Nom_de_Zone()

Dim nom As Name 'déclare la variable nom
Dim Fini
Dim Bonnefeuille
Dim Nouveau_Nom

Nouveau_Nom = Application.InputBox("Entrez l Extension ...", , "FR")
If Nouveau_Nom = False Then End
Application.DisplayAlerts = False
Fini = ActiveWorkbook.Sheets.Count

For Each nom In Names
'boucle sur toutes les plages nommées
'remplacement du nom de la plage nommée dans les cellules
For Bonnefeuille = Fini To 1 Step -1
Sheets(Bonnefeuille).Select
On Error Resume Next
Cells.SpecialCells(xlCellTypeFormulas).Replace What:=nom.Name, Replacement:=nom.Name & "_" & Nouveau_Nom, LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next Bonnefeuille
'remplacement des plages nommées
nom.Name = nom.Name & "_" & Nouveau_Nom
'modifie le nom de la plage nommée
Err = 0
Next nom
'prochaine plage nommée de la boucle

Application.DisplayAlerts = True
On Error GoTo 0

MsgBox ("Opération terminée")

End Sub
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
512

Statistiques des forums

Discussions
314 656
Messages
2 111 607
Membres
111 218
dernier inscrit
Jean-Kev