OVH Cloud OVH Cloud

Savoir si cellule dans plages nommées !

15 réponses
Avatar
Jed
Bonjour =E0 tous,
J'aimerai savoir comment faire en vba pour savoir si la=20
cellule selectionn=E9e est dans une plage nomm=E9?
J'aimerai mettre ce code dans l'=E9v=E9nement Selection_Change.
En fonction de la plage je dois afficher un userform=20
diff=E9rent.
Merci de votre aide.
Cordialement.
Jed

5 réponses

1 2
Avatar
michdenis
Bonjour AV,

" s'il y a présence d'une plage nommée dynamiquement (DECALER...) "

et tu aurais pu ajouter, Nom représentant une constante, une formule ...



En voici une spécialement pour toi ;-))

'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim Rg As Range, N As Name, Nom As String

On Error Resume Next
For Each N In ThisWorkbook.Names
Nom = Range(N.RefersTo).Name.Name
If Err = 0 Then
Set Rg = Intersect(Target, Range(Nom))
If Not Rg Is Nothing Then
MsgBox "La cellule " & Target.Address(0, 0) & _
" fait parti de la plage nommée : " _
& Nom & " ."
End If
Else
Err = 0
End If
Next
Set Rg = Nothing
End Sub
'---------------------------------


Salutations!





"AV" a écrit dans le message de news:
Ave Denis,

Un bémol :
Il me semble que la méthode va échouer s'il y a présence d'une plage nommée
dynamiquement (DECALER...)

AV
Avatar
AV
En voici une spécialement pour toi ;-))


Pffff... tu vas quand même pas t'en tirer avec "On Error Resume Next" !
Et mon message si je suis "dans" ma plage hein ?
Faudrait voir à s'appliquer un peu....

AV




'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim Rg As Range, N As Name, Nom As String

On Error Resume Next
For Each N In ThisWorkbook.Names
Nom = Range(N.RefersTo).Name.Name
If Err = 0 Then
Set Rg = Intersect(Target, Range(Nom))
If Not Rg Is Nothing Then
MsgBox "La cellule " & Target.Address(0, 0) & _
" fait parti de la plage nommée : " _
& Nom & " ."
End If
Else
Err = 0
End If
Next
Set Rg = Nothing
End Sub
'---------------------------------


Salutations!





"AV" a écrit dans le message de news:


Ave Denis,

Un bémol :
Il me semble que la méthode va échouer s'il y a présence d'une plage nommée
dynamiquement (DECALER...)

AV





Avatar
michdenis
Bonjour AV,

Ce n'est que pour le plaisir parce que le demandeur n'utilise jamais ce type de bidule !!!

;-)

Je compte sur toi pour tester tous les cas de figure !

'----------------------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rg As Range, N As Name, Nom As String, A As String

On Error Resume Next
For Each N In ThisWorkbook.Names
Nom = ""
If InStr(1, N.RefersTo, "OFFSET", vbTextCompare) <> 0 Then
A = Right(N.RefersTo, Len(N.RefersTo) - 1)
Nom = Range(A).Parent.Name & "!" & Range(A).Address
Else
Nom = Range(N.RefersTo).Name.Name
End If
Set rg = Intersect(Target, Range(Nom))
If Err = 0 Then
If Not rg Is Nothing Then
Message = Message & "La cellule " & _
Target.Address(0, 0) & _
" fait parti de la plage nommée : " _
& N.Name & " ." & vbCrLf
End If
Else
Err = 0
End If
Next
If Message <> "" Then
MsgBox Message
End If
Set rg = Nothing
End Sub
'----------------------------------------


Salutations!




"AV" a écrit dans le message de news:
En voici une spécialement pour toi ;-))


Pffff... tu vas quand même pas t'en tirer avec "On Error Resume Next" !
Et mon message si je suis "dans" ma plage hein ?
Faudrait voir à s'appliquer un peu....

AV




'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim Rg As Range, N As Name, Nom As String

On Error Resume Next
For Each N In ThisWorkbook.Names
Nom = Range(N.RefersTo).Name.Name
If Err = 0 Then
Set Rg = Intersect(Target, Range(Nom))
If Not Rg Is Nothing Then
MsgBox "La cellule " & Target.Address(0, 0) & _
" fait parti de la plage nommée : " _
& Nom & " ."
End If
Else
Err = 0
End If
Next
Set Rg = Nothing
End Sub
'---------------------------------


Salutations!





"AV" a écrit dans le message de news:


Ave Denis,

Un bémol :
Il me semble que la méthode va échouer s'il y a présence d'une plage nommée
dynamiquement (DECALER...)

AV





Avatar
AV
Ce n'est que pour le plaisir parce que le demandeur n'utilise jamais ce type
de bidule !!!

Si, si ...! Il n'a simplement pas osé le demander...!

Je compte sur toi pour tester tous les cas de figure !
Pfff..... faut tout faire ici !


AV

Avatar
michdenis
Bonjour AV,

" Pfff..... faut tout faire ici ! "


Je te ferai remarquer que tu as déjà 2 secrétaires !

;-))


Salutations!
1 2