VBA - gestionnaire de noms

Bonjour à tous,

Je cherche une solution en VBA pour automatiser la saisie des "Noms" (des centaines) dans le Gestionnaire de noms, mes recherches sont infructueuse.

Suivant le visuel ci-après, quel code puis-appliquer ?

Le but est de copier la valeur de la cellule sélectionnée dans le champs Noms.... j'ai un début de code mais c'est la fin de l'instruction qui me manque.

Option Explicit

Sub Macro1()
Dim A As String
A = ActiveCell.Value
    ActiveWorkbook.Names.Add Name:=A
End Sub

Quelqu'un connaitrait-il la solution ? et le top applicable à une plage de cellules...

Merci par avance.

gestionnaire noms

bonjour El1ooolio

pour écrire via vbe il faut mettre .name pour que le nom de cellule soit inscrit

sheets("feuil1").Range("D1").name = "el1000lio"

Bonjour,

Voilà pour finaliser ta procédure, telle que commencée :

Sub Macro1()
    Dim A As String, Adr As String
    With ActiveCell
        A = .Value
        Adr = "='" & .Worksheet.Name & "'!" & .Address
    End With
    ActiveWorkbook.Names.Add A, Adr
End Sub

Cependant elle ne te permet pas d'"automatiser" l'insertion de dizaines de noms ou plus !

Pour ce faire, il te faut parcourir les cellules à nommer au moyen d'une boucle et procéder à l'insertion à chaque tour de boucle.

Une gestion d'erreur est sans doute à prévoir, en cas de nom incompatible ou manquant...

Cordialement.

Merci à tous les deux,

Vos réponses m'ont énormément aider.... et ci-après le code d'une simplicité "enfantine" me permet de générer les NOMS sur une plage de cellules "énormes" et ça fonctionne

Sub test()
Dim i As Variant
For Each i In Selection
      i.Name = i.Value
Next i
End Sub

Merci encore !

Bonjour,

je déterre ce vieux post car c'est jusqu'à présent celui qui se rapproche le plus de ce dont j'ai besoin...

Voici tout d'abord à quoi ressemble mon fichier.

capture d ecran 2019 09 04 a 17 45 52

Pour résumer, un tableau avec des noms d'avions et les immatriculations des avions.

J'aimerais que les listes créé par ma macro se mette à jour tout seul sans faire de doublons. Je précise que les listes en question sont appelées en cascade dans une autre page.

J'ai définis la liste "AVION" qui va de A4 à A 59 et ensuite sur chaque ligne la liste des immats de chaque TYPE d'avions.

Par exemple BE_76 correspond à I4:AG4.

J'avais commencé à faire mon code de la manière suivant jusqu'à ce que je me rende compte que si je changeais l'ordre de mes avions ou si je mettais le nom à jour, j'obtenais des doublons:

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.Unprotect "*****"

If Not Application.Intersect(Target, Range("A4:A59")) Is Nothing Then

ActiveWorkbook.Names.Add Name:="AVION", RefersToR1C1:= _

"='Aircraft list'!R4C1:R59C1"

Range("H4:AG59").Select

Selection.CreateNames Top:=False, Left:=True, Bottom:=False, Right:= _

False

End If

If Not Application.Intersect(Target, Range("I4:AG59")) Is Nothing Then

ActiveWorkbook.Names.Add Name:="AVION", RefersToR1C1:= _

"='Aircraft list'!R4C1:R59C1"

Range("H4:AG59").Select

Selection.CreateNames Top:=False, Left:=True, Bottom:=False, Right:= _

False

End If

Range("A4").Select

ActiveSheet.Protect "*******", True, True, True

End Sub

Puis j'ai essayé de l'améliorer, mais inutique de vous dire que ca rame et que je suis sure qu'il y a moyen de faire mieux...:

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.Unprotect "*****"

If Not Application.Intersect(Target, Range("A4:A59")) Is Nothing Then

Dim nm As Name

For Each nm In ActiveWorkbook.Names

nm.Delete

Next nm

ActiveWorkbook.Names.Add Name:="AVION", RefersToR1C1:= _

"='Aircraft list'!R4C1:R59C1"

Range("H4:AG59").Select

Selection.CreateNames Top:=False, Left:=True, Bottom:=False, Right:= _

False

End If

If Not Application.Intersect(Target, Range("I4:AG59")) Is Nothing Then

Dim nm As Name

For Each nm In ActiveWorkbook.Names

nm.Delete

Next nm

ActiveWorkbook.Names.Add Name:="AVION", RefersToR1C1:= _

"='Aircraft list'!R4C1:R59C1"

Range("H4:AG59").Select

Selection.CreateNames Top:=False, Left:=True, Bottom:=False, Right:= _

False

End If

Range("A4").Select

ActiveSheet.Protect "********", True, True, True

End Sub

Bref je sollicite votre aide pour simplifier un peu le bordel et faire en sorte que mon fichier ne rame pas...

Merci à voulus.

Rechercher des sujets similaires à "vba gestionnaire noms"