Trouver le nom de l'étiquette en fonction de la cellule active

schreckdebase

XLDnaute Junior
Bonsoir à tous,

En changeant de cellule, si la cellule active est dans une étiquette (avec la fonction DECALER), je souhaiterais pouvoir récupérer le nom de cette étiquette.

J'ai trouvé ce code sur la page Excel Macros mais je n'arrive pas à le faire fonctionner...

Code:
Public Function CellInNamedRange(Rng As Range) As String

Dim N As Name
Dim C As Range
Dim TestRng As Range
On Error Resume Next

For Each N In ActiveWorkbook.Names
    Set C = Nothing
    Set TestRng = N.RefersToRange
    Set C = Application.Intersect(TestRng, Rng)
    If Not C Is Nothing Then
        CellInNamedRange = N.Name
        Exit Function
    End If
Next N
CellInNamedRange = ""

End Function

Des idées ?

Merci pour vos lumières ! :)
 

JNP

XLDnaute Barbatruc
Re : Trouver le nom de l'étiquette en fonction de la cellule active

Bonsoir SchreckDeBase :),
Code:
Public Function CellInNamedRange(Rng As Range) As String
Dim N As Name
Dim C As Range
Dim TestRng As Range
For Each N In ActiveWorkbook.Names
    Set C = Nothing
    Set TestRng = Range(N.Name)
    Set C = Application.Intersect(TestRng, Rng)
    If Not C Is Nothing Then
        CellInNamedRange = N.Name
        Exit Function
    End If
Next N
End Function
semble fonctionner :rolleyes:...
Bonne suite :cool:
 

schreckdebase

XLDnaute Junior
Re : Trouver le nom de l'étiquette en fonction de la cellule active

Bonsoir JNP ! :D

Dans quelle partie ce code doit être collé ? C'est une fonction... mais je voudrais avoir ça en "Sub", j'ai essayé avec ceci :

Code:
Public Sub CheckRange()

    Dim nName As Name
    On Error Resume Next
    For Each nName In ActiveWorkbook.Names
        RangeName = nName.Name
        If Application.Intersect(ActiveCell, Range(RangeName)) Is Nothing Then
            MsgBox "Range " & nName.Name
            ' Exit Sub
        End If
    Next nName
        
End Sub

Mais j'ai le droit à un défilé de toutes les étiquettes, alors que la cellule active est dans une seule plage définie par une étiquette... :confused:
 

JNP

XLDnaute Barbatruc
Re : Trouver le nom de l'étiquette en fonction de la cellule active

Re :),
Euh, que veux tu faire exactement :confused: ?
Si c'est à la sélection de la cellule que tu veux faire ton Check, il faut mettre la fonction dans un module, et dans le code de feuille
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Résultat As String
Résultat = CellInNamedRange(Target)
If Résultat <> "" Then MsgBox Résultat
End Sub
Bonne soirée :cool:
 

schreckdebase

XLDnaute Junior
Re : Trouver le nom de l'étiquette en fonction de la cellule active

Rere ! ;)

Je viens de trouver ce que je cherchais à faire... Le code vient de Visual Basic macro to show active cell's range names in Excel

Code:
Sub Find_Names()
' Loop through all names in workbook.
   For Each n In ActiveWorkbook.Names
      ' Check to see if the name refers to the ActiveSheet.
      If InStr(1, n.RefersTo, ActiveSheet.Name, vbTextCompare) > 0 Then
         ' If name refers to ActiveSheet, then find the intersection of the
         ' named range and the ActiveCell.
         Set y = Intersect(ActiveCell, Range(n.RefersTo))
         ' Display a message box if the ActiveCell is in the named range.
         If Not y Is Nothing Then MsgBox "Cell is in : " & n.Name
      End If
   Next
   MsgBox "No More Names!"
   ' Display message when finished.
End Sub

Merci tout de même de t'être intéressé à mon problème ! :D

Excellente soirée à toi et au forum ! :cool:
 

Discussions similaires

Réponses
13
Affichages
290

Statistiques des forums

Discussions
312 493
Messages
2 088 949
Membres
103 989
dernier inscrit
jralonso