Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment retrouver le Nom d'une plage?

21 réponses
Avatar
Thierry
Bonjour,

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

Plage001=Feuil1!$B$2:$C$8
Plage002=Feuil1!$B$10:$C$16
Plage003=Feuil1!$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.

10 réponses

1 2 3
Avatar
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
Avatar
Thierry
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" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:

> 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




Avatar
JLuc
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" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:

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
Avatar
MichDenis
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
'--------------------------------------------------
Avatar
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" wrote in message
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" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:

> 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








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

Encore Merci,
Bonne soirée,
Thierry.

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

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" wrote in message
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" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:
>
>> > 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
>>
>>
>
>




Avatar
rthompson
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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
'--------------------------------------------------


Avatar
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 !!!
Avatar
rthompson
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" a écrit dans le message de news:
%
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 !!!
Avatar
Modeste
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
1 2 3