Excel 2021 - Définir un nom de cellule avec une formule ou fonction

Bonjour

Je voulais savoir s'il était possible avec excel de définir un nom de cellule avec une formule.

Exemple :
Nom de cellule = Info_54
Je souhaiterai faire nom de formule = Info_ (+ ou &) C4 en sachant que la cellule C4 contient 54.

Je doute que ce soit possible mais à tout hasard je pose la question

Bonsoir,

en VBA tout est possible (ou presque) : si tu veux que ce soit dans un module à déclencher toi-même ;

Sub nomcell()
    Range("C2").Select
    Selection.Copy
    Application.CutCopyMode = False
    ActiveWorkbook.Names.Add Name:=Range("D2"), RefersToR1C1:="=Feuil1!R2C4"
    Range("D4").Select
End Sub

Mais à chaque fois que tu vas faire une modification du nom et activer la macro, ça va rajouter un nom ;

excel nom de cellule par formule

Et si tu veux que ça se fasse tout seul dès que tu changes quelque chose sur la feuille (code à mettre sur la feuille en question) ;

Private Sub Worksheet_Change(ByVal Target As Range)
    Range("C2").Select
    Selection.Copy
    Application.CutCopyMode = False
    ActiveWorkbook.Names.Add Name:=Range("D2"), RefersToR1C1:="=Feuil1!R2C4"
    Range("D4").Select
End Sub

ou si tu veux que ça se fasse tout seul uniquement quand C4 est modifiée ;

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$4" Then
    Range("C2").Select
    Selection.Copy
    Application.CutCopyMode = False
    ActiveWorkbook.Names.Add Name:=Range("D2"), RefersToR1C1:="=Feuil1!R2C4"
    Range("D4").Select
    End If
End Sub

bonsoir JeanF44, Doux Rêveur,

@Doux Rêveur,

en VBA, l'utilisation de "Select" et/ou "Activate", c'est quelque chose à éviter, cela sert à rien et ralentit la macro.

ceci fait la même chose que la 2eme macro de votre post

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address <> "$C$4" Then Exit Sub
     With Range("D2")
          .Name = .Value
     End With
End Sub

Bonjour à tous et merci de vos réponses

De rien.

@ BsAlv : c'est noté, en fait je ne savais pas comment faire alors j'ai procédé manuellement en enregistrant la macro et l'ai un peu modifiée, notamment en rajoutant la dernière ligne pour sélectionner une cellule précise à la fin. Je suppose que le ralentissement sur un code si court doit être faible.

Et j'ai aussi une question : vu que chaque changement en C4 rajoute un nom, comment effacer les précédents dans la même macro ? Sans effacer ceux qui n'auraient rien à voir avec cette cellule.

Merci.

bonjour Doux Rêveur,

voici une possibilité

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address <> "$C$4" Then Exit Sub
     With Range("D2")

          s = "=" & Me.Name & "!" & .Address     'sera la référence utilisée (je l'avais vu avec le "debug.print"
          For Each nm In ThisWorkbook.Names  'boucler tous les noms existants
               'Debug.Print nm.RefersTo 'seulement pour voir le contenu une fois
               If nm.RefersTo = s Then nm.Delete     'supprimer ceux avec la même référence
          Next

          .Name = .Value 'nouveau name
     End With
End Sub

Merci BsAlv, ça marche bien !

Rechercher des sujets similaires à "2021 definir nom formule fonction"