Comment retrouver le Nom d'une plage?

Le
Thierry
Bonjour,

sous Excel 2000, j'ai dans "Feuil1" une centaine de plage nommées.

Plage001þuil1!$B$2:$C$8
Plage002þuil1!$B$10:$C$16
Plage003þuil1!$E$4:$F$9
etc

j'aimerai, en double cliquant sur une cellule, connaître le nom de la plage
dont elle fait partie.

ex:
si je double-clic sur B12, NomPlage = Plage002
si je double-clic sur F8, NomPlage = Plage003

Seulement, je n'arrive pas à trouver la fonction..

*******************************************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)

NomPlage = Target.????

End Sub
*******************************************************
Merci d'avance pour vos lumières.
Thierry.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Caetera
Le #19297581
> j'aimerai, en double cliquant sur une cellule, connaître le nom de la plage
dont elle fait partie.



Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
For Each nM In ActiveWorkbook.Names
If Not Intersect(Range(nM.Name), Target) Is Nothing Then
MsgBox nM.Name
End If
Next
Cancel = True
End Sub


Etc
Thierry
Le #19298251
Merci pour ton aide.

J'ai un souci..

Dans mon classeur j'ai plusieurs feuilles (Bat1, Bat2, Atelier,....)

Tant que je n'ai pas d'autres plages nommées dans les autres feuilles, ce
code marche, sinon il plante en me renvoyant ce message:
La méthode 'Range' de l'objet '_worksheet' à échoué.

J'ai encore besoins de vos lumières...
Thierry.


"Caetera"
> j'aimerai, en double cliquant sur une cellule, connaître le nom de la


plage
> dont elle fait partie.

Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
For Each nM In ActiveWorkbook.Names
If Not Intersect(Range(nM.Name), Target) Is Nothing Then
MsgBox nM.Name
End If
Next
Cancel = True
End Sub


Etc




JLuc
Le #19299051
Salut Thierry,
Rajoute un test sur le nom de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
For Each nm In ActiveWorkbook.Names
If (nm Like "*" & Me.Name & "*") = True Then
If Not Intersect(Range(nm.Name), Target) Is Nothing Then
MsgBox nm.Name
End If
End If
Next
Cancel = True
End Sub


Thierry a écrit :
Merci pour ton aide.

J'ai un souci..

Dans mon classeur j'ai plusieurs feuilles (Bat1, Bat2, Atelier,....)

Tant que je n'ai pas d'autres plages nommées dans les autres feuilles, ce
code marche, sinon il plante en me renvoyant ce message:
La méthode 'Range' de l'objet '_worksheet' à échoué.

J'ai encore besoins de vos lumières...
Thierry.


"Caetera"
j'aimerai, en double cliquant sur une cellule, connaître le nom de la plage
dont elle fait partie.



Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
For Each nM In ActiveWorkbook.Names
If Not Intersect(Range(nM.Name), Target) Is Nothing Then
MsgBox nM.Name
End If
Next
Cancel = True
End Sub


Etc





--
JLuc
« Celui qui trouve sans chercher est celui qui a longtemps cherché
sans trouver. » - Gaston BACHELARD
MichDenis
Le #19299041
Bonjour Thierry,


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim F As String
On Error Resume Next
For Each nm In ActiveWorkbook.Names
F = Right(nm.RefersTo, Len(nm.RefersTo) - 1)
If TypeName(Range(F)) = "Range" Then
If Err = 0 Then
If InStr(1, F, Me.Name, vbTextCompare) > 0 Then
If Not Intersect(Range(nm.Name), Target) Is Nothing Then
MsgBox nm.Name
End If
End If
Else
Err.Clear
End If
End If
Next
End Sub
'--------------------------------------------------
Mishell
Le #19300371
L'erreur t'indique que cette plage n'est pas sur cette feuille. Il faut
utiliser cette erreur pour éliminer les plages appartenant à une autre
feuille.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
On Error Resume Next
For Each nM In ActiveWorkbook.Names
If Not Intersect(Range(nM.Name), Target) Is Nothing Then
If Err = 0 Then
MsgBox nM.Name
Else
Err.Clear
End If
End If
Next

End Sub

Mishell

"Thierry" news:%
Merci pour ton aide.

J'ai un souci..

Dans mon classeur j'ai plusieurs feuilles (Bat1, Bat2, Atelier,....)

Tant que je n'ai pas d'autres plages nommées dans les autres feuilles, ce
code marche, sinon il plante en me renvoyant ce message:
La méthode 'Range' de l'objet '_worksheet' à échoué.

J'ai encore besoins de vos lumières...
Thierry.


"Caetera"
> j'aimerai, en double cliquant sur une cellule, connaître le nom de la


plage
> dont elle fait partie.

Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
For Each nM In ActiveWorkbook.Names
If Not Intersect(Range(nM.Name), Target) Is Nothing Then
MsgBox nM.Name
End If
Next
Cancel = True
End Sub


Etc








Thierry
Le #19301841
Merci à vous quatre pour vos réponses.
C'est ce que je voulais.

Encore Merci,
Bonne soirée,
Thierry.

"Mishell"
L'erreur t'indique que cette plage n'est pas sur cette feuille. Il faut
utiliser cette erreur pour éliminer les plages appartenant à une autre
feuille.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
On Error Resume Next
For Each nM In ActiveWorkbook.Names
If Not Intersect(Range(nM.Name), Target) Is Nothing Then
If Err = 0 Then
MsgBox nM.Name
Else
Err.Clear
End If
End If
Next

End Sub

Mishell

"Thierry" news:%
> Merci pour ton aide.
>
> J'ai un souci..
>
> Dans mon classeur j'ai plusieurs feuilles (Bat1, Bat2, Atelier,....)
>
> Tant que je n'ai pas d'autres plages nommées dans les autres feuilles,


ce
> code marche, sinon il plante en me renvoyant ce message:
> La méthode 'Range' de l'objet '_worksheet' à échoué.
>
> J'ai encore besoins de vos lumières...
> Thierry.
>
>
> "Caetera" >
>> > j'aimerai, en double cliquant sur une cellule, connaître le nom de la
> plage
>> > dont elle fait partie.
>>
>> Dans le module de la feuille :
>>
>> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel


As
>> Boolean)
>> For Each nM In ActiveWorkbook.Names
>> If Not Intersect(Range(nM.Name), Target) Is Nothing Then
>> MsgBox nM.Name
>> End If
>> Next
>> Cancel = True
>> End Sub
>>
>>
>> Etc
>>
>>
>
>




rthompson
Le #19318231
Bonjour à toi Michdenis

Merci pour cette astuce

Mais comment fait-on pour supprimer le Bong Bong?

A mon avis dans Tools Options quelque part, non?

A bientôt

Rex


"MichDenis"
En fait, ce serait plus complet avec ceci :

Un NOM peut faire référence à :
A ) une constante
B ) une formule
C ) une plage de cellule faisant référence à :
þuil!A1:A10
=!A1:A10

'---------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)

Dim F As String
On Error Resume Next
For Each nm In ActiveWorkbook.Names

F = Right(nm.RefersTo, Len(nm.RefersTo) - 1)
If Mid(F, 2, 1) = "!" Then
F = Left(F, 1) & Me.Name & F
F = Replace(F, """", "")
End If
If TypeName(Range(F)) = "Range" Then
If Err = 0 Then
If InStr(1, F, Me.Name, vbTextCompare) Then
If Not Intersect(Range(nm.Name), Target) Is Nothing Then
MsgBox nm.Name
End If
End If
Else
Err = 0
End If
End If
Next
End Sub
'---------------------------------------------




"MichDenis" discussion :
Bonjour Thierry,


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)

Dim F As String
On Error Resume Next
For Each nm In ActiveWorkbook.Names
F = Right(nm.RefersTo, Len(nm.RefersTo) - 1)
If TypeName(Range(F)) = "Range" Then
If Err = 0 Then
If InStr(1, F, Me.Name, vbTextCompare) > 0 Then
If Not Intersect(Range(nm.Name), Target) Is Nothing Then
MsgBox nm.Name
End If
End If
Else
Err.Clear
End If
End If
Next
End Sub
'--------------------------------------------------


Modeste
Le #19320601
Bonsour® rthompson avec ferveur ;o))) vous nous disiez :

Mais comment fait-on pour supprimer le Bong Bong?

A mon avis dans Tools Options quelque part, non?



:-( you loose !!!
il s'agit d'une option Windows

Panneau de configuration, Sons et périphériques
onglet Sons > Windows > Exclamation

la modification (suppression ou changement) s'appliquera à tout les programmes !!!
rthompson
Le #19324791
Bonjour mon cher Modeste

Donc pas moyen de faire via macro

Dommage


AH Mais j'y pense

Il n'y a-t-il pas moyen de faire sauter les message Windows
il me semble avoir vu un truc comme ça quelque part, non?


Enfin

Merci et à bientôt

Rex

"Modeste" %
Bonsour® rthompson avec ferveur ;o))) vous nous disiez :

Mais comment fait-on pour supprimer le Bong Bong?

A mon avis dans Tools Options quelque part, non?



:-( you loose !!!
il s'agit d'une option Windows

Panneau de configuration, Sons et périphériques
onglet Sons > Windows > Exclamation

la modification (suppression ou changement) s'appliquera à tout les
programmes !!!
Modeste
Le #19325001
Bonsour® rthompson avec ferveur ;o))) vous nous disiez :

Donc pas moyen de faire via macro
Dommage
Il n'y a-t-il pas moyen de faire sauter les message Windows
il me semble avoir vu un truc comme ça quelque part, non?



;o))
le plus simpel est de désactiver le son, n'est-il pas ??

Sub Switch_Mute()
Dim reponse
SendKeys "{TAB} ~"
reponse = Shell("sndvol32 /t", 0)
End Sub
Publicité
Poster une réponse
Anonyme