Création de nom via une table

Bonjour à tous,

Je suis devant un dilemme sur lequel je n'arrive pas à trouver la bonne syntaxe et écriture.

"Novice" en code VBA je tente de manipuler du code par enregistrement et via mes recherches internet mais rien ne fonctionne.

Le problème :

J'ai un fichier excel dans lequel j'ai besoin de créer 1 millier de nom répartis sur plusieurs feuilles. Je cherche donc à automatiser la création des noms via une table en donnant en entrée le nom de la valeur et la cellule qui doit être renommée.

Partant du principe que j'ai un fichier excel avec 3 feuilles : Feuil1 & Feuil2, et Feuil3 dans laquelle est ma table suivante :

NomFeuille sourceCellule sourceFeuille & cellule
Val_0001Feuil1!K9Feuil1!K9
Val_0002Feuil1!K11Feuil1!K11
Val_0003Feuil1!K13Feuil1!K13
Val_0004Feuil1!D17Feuil1!D17
Val_0005Feuil1!D19Feuil1!D19
Val_0006Feuil1!D21Feuil1!D21
Val_0007Feuil1!D23Feuil1!D23
Val_0008Feuil1!K17Feuil1!K17
Val_0009Feuil1!K19Feuil1!K19
Val_0010Feuil1!K21Feuil1!K21
Val_0011Feuil1!K23Feuil1!K23
Val_0012Feuil2!D52Feuil2!D52
Val_0013Feuil2!D54Feuil2!D54
Val_0014Feuil2!D56Feuil2!D56
Val_0015Feuil2!D58Feuil2!D58
Val_0016Feuil2!K52Feuil2!K52
Val_0017Feuil2!K62Feuil2!K62
Val_0018Feuil2!D70Feuil2!D70
Val_0019Feuil2!K70Feuil2!K70
Val_0020Feuil2!K78Feuil2!K78

Grâce à ma table je sais que la Cellule K78 de la feuil2 doit s'appeler Val_0020.

Derrière je tente de faire une boucle afin de lire la table et créer les noms avec les bouts de code suivant :

Sub AjoutNom()
Dim i As Integer
Dim j As Integer
i = xx
j = yy
For x = i To j

    ActiveWorkbook.Names.Add _
        Name:="Val_0001 à Val_0020", _  '
        RefersToR1C1:=Feuil3!D2 à Feuil3!D21
Next x

End Sub

Le code est une démonstration de l'idée de la fonction et je suis conscient qu'il n'est absolument pas fonctionnel

Merci d'avance à tous ceux qui pourront m'aider :) !!

N.B. 1 : Le bonus pour moi serait la possibilité une fois les noms ajoutés à mon fichier d'avoir une macro capable de me ré-écrire un tableau en renvoyant pour chaque nom la cellule fait référence à

bonjour,

une proposition , les données sont dans la feuille "table" en colonne A à D

Sub aargh()
    With Sheets("table")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To dl
            ActiveWorkbook.Names.Add Name:=.Cells(i, 1).Value, RefersTo:=.Cells(i, 4).Value
        Next
    End With
End Sub

Merci pour la proposition elle fonctionne à 99% !

Le hic c'est que avec l'extraction de la value dans le gestionnaire de noms -> Nom : Val_0001 fait référence à ="Feuil1!K9" et non =Feuil1!K9 (j'imagine qu'il prend un string et non une adresse

RefersTo:=.Cells(i, 4).Value

re-bonjour,

correction

Sub aargh()
    With Sheets("table")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To dl
            ActiveWorkbook.Names.Add Name:=.Cells(i, 1).Value, RefersTo:=Range(.Cells(i, 4).Value)
        Next
    End With
End Sub

Bonjour tout le monde,

Pour ce qui est d'afficher la table des noms, on peut faire ainsi :

essai

Merci à tous les deux !

J'avais oublié cette possibilité d'extraire manuellement les noms enregistrés !

Vraiment un grand merci parce que l'utilisation du range pour le cells().value ne m'était même pas venu à l'esprit !

Bonne journée à tous !

Rechercher des sujets similaires à "creation nom via table"