Remplacer le nom d'une cellule via gestionnaire de noms

Bonjour,

j'ai besoin de modifier un grand nombre de noms de cellules dans une plage définie. Je cherche un code me permettant de le faire pour ne pas avoir à tout modifier manuellement dans le gestionnaire de noms.

Je vous ai mis en PJ un exemple de ce que j'aimerai faire. Ici, remplacer dans ("C4:C6"), la partie "arbre" du nom de la cellule par tout autre chose, je vous laisse mettre ce que vous voulez.

C'est en fait la partie rechercher/remplacer à insérer dans le code que je ne maîtrise pas. Dans le fichier joint, j'ai un (tout petit) prémice de code.

Si vous avez des idées...

Merci !

28classeur1.xlsm (14.60 Ko)

Bonjour,

Avec une boucle et à adapter à tes besoins :

Sub modifier_nom_cellule()

    Dim Nom As Name

    For Each Nom In ActiveWorkbook.Names

        'inscrit le préfixe "Vélo" en récupérant les 5 dernières lettres
        'de son précédant nom
        Nom.Name = "Vélo" & Right(Nom.Name, 5)

    Next Nom

End Sub

Hervé.

Bonjour

Une manière serait de supprimer le nom existant et de le remplacer par un nouveau

Code à essayer

Sub modifier_nom_cellule()
'MAcro Dan
' modifier_nom_cellule Macro
' 3 rouge
'14 vert
' 33 bleu
Dim oname As String, nname As String, nmcoul As String
Dim i As Byte
oname = "arbre"
nname = "velo"
For i = 4 To 6
    nomcoul = Cells(i, "C").Interior.ColorIndex
    Select Case nomcoul
        Case 3: nomcoul = "rouge"
        Case 14: nomcoul = "vert"
        Case 33: nomcoul = "bleu"
    End Select
    On Error Resume Next
With ActiveWorkbook
    .Names(Cells(i, "C").Name.NameLocal).Delete
    .Names.Add Name:=(nname & nomcoul), RefersToR1C1:=Cells(i, "C")
End With
Next
End Sub

Si ok, merci de cloturer le fil en cliquant sur le V vert à coté du bouton EDITER

Amicalement

EDIT DAN : Oups désolé je n'avais pas vu la réponse postée par Theze

Bonjour Hervé,

Merci pour cette réponse qui déjà me permet d'y voir plus clair.

Le soucis et du coup je me rends compte que mon exemple n'est pas très judicieux, c'est que la section à changer n'est pas toujours à la même place dans mon nom de cellule.

C'est pour cela que je faisais référence à un rechercher/remplacer.


Bonjour Dan,

Merci pour cette réponse mais je vais faire la même réponse qu'à Hervé.

Les noms sont en fait du type:

unarbrerouge

ungrandarbrerougeetbleu

enfin bref, la section à remplacer est potentiellement à n'importe quel endroit à l'intérieur du nom, ni en début ni à la fin.

Du coup, il me faut un code qui repère la section en question et qui la remplace par une autre...

re,

enfin bref, la section à remplacer est potentiellement à n'importe quel endroit à l'intérieur du nom, ni en début ni à la fin.

Du coup, il me faut un code qui repère la section en question et qui la remplace par une autre....

Si le nom de ta couleur est bien placé à la fin du nom, tu peux utiliser le code que je te propose, il fonctionnera à chaque reprise

Donc fais un essai....

Edit Dan :

Sinon, sur base du coe proposé par Theze, tu peux essayer aussi ceci :

Sub modifier_nom_cellule()
Dim Nom As Name
Dim oname As String
Dim x As Byte
oname = "arbre"
x = Len(oname)
    For Each Nom In ActiveWorkbook.Names
       Nom.Name = "Vélo" & Right(Nom.Name, x)
    Next Nom
End Sub

Re,

Très concrètement, voilà mes noms de cellules (une toute petite partie). Comme c'est relativement compliqué, j'avais décidé de prendre un exemple simple mais du coup ça prête à confusion.

id_bv_TypBV1Pign1BatVxCollBipFerAvFait

id_bv_M2_CotBatVxCollMonoSemOuv

id_bv_S2EntrLibPign1BatVxCollBipFer

id_bv_M2_CotBatVxCollBipFerAvFait

id_bv_M2_S2FaitBatVxCollBipFer

Ces noms ne sont pas tous du même format. En fait leur seul point commun, c'est qu'à l'intérieur il y a "BatVxColl" que je veux remplacer par "Bat" tout court, ou supprimer "VxColl" c'est selon..

Merci en tout cas

Bonjour,

Bonjour Dan

Ma petite contribution :

Sub Macro1()
Dim Nms As Name
For Each Nms In Names
    If Nms.Name Like "*arbre*" Then
        Nms.Name = Application.Substitute(Nms.Name, "arbre", "chene")
    End If
Next Nms
End Sub

Bonne journée


Re-,

Dans ton exemple :

Sub Macro1()
Dim Nms As Name
For Each Nms In Names
    If Nms.Name Like "*BatVxColl*" Then
        Nms.Name = Application.Substitute(Nms.Name, "VxColl", "")
    End If
Next Nms
End Sub

Bon courage

Je viens de tester la solution de cousinhub, ça marche au poil!

Merci beaucoup à tous les 3 pour votre aide, ça va me faire gagner un temps fou...

Bonne journée à vous tous

Rechercher des sujets similaires à "remplacer nom via gestionnaire noms"