plages nommées et Intersect(target,plage nommées)

C

CHti160

Guest
bonsoir à toutes et à tous
sur une feuille j'ai un grand nombre de plages nommées auquelles j'aimerais faire référence viaIntersect(Target,Range(des plages nommées))
mon problème et de savoir s'il est possible et comment, d'affecter à un range l'ensemble des noms de ces plages nommées
ex Set Collection_Noms = ActiveWorkbook.Names
For r = 1 To Collection_Noms.Count
Total=range(Collection_Noms(r).name)
ce qui me permettrait d'écrire un truc du genre if not Intersect(Target,Range(Total)) is nothing en utilisant ainsi le nom des plages nommées
en espèrant pouvoir être compris
merci d'avance
A+++
Jean Marie
 
M

Minick

Guest
Salut le Chti,

si j'ai bien compri
essai ca

For Each Nom In Application.Names
Plage = Plage & Range(Nom).Address & ","
Next
Plage = Left(Plage, Len(Plage) - 1)

If Not Intersect(Range("L4"), Range(Plage)) Is Nothing Then
'Ton code
End If


@+ Minick
(un autre Chti)
 
C

CHti160

Guest
re bonsoir
j'ai tenté d'utiliser le code de"Minick"(ChTi de vendin) Lol
en l'adaptant ainsi
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
quelles variables déclarer ????
Dim Plage ??????
Dim Nom as string 'je pense
For Each Nom In Application.Names
Plage = Plage & Range(Nom).Address & "," 'celà devrait me donner une référance à toutes les plage nommées
Next
Plage = Left(Plage, Len(Plage) - 1) 'là je ne comprends pas

If Not Intersect(Target, Range(Plage)) Is Nothing Then
'donc là je voudrais qu'en doubleclick dans la zone définie par plage(ensemble des plages nommées) que le userform1 Apparaisse
userform1 .show
End If

end sub
j'espère trouver un moyen(VBA)de regrouper l'ensemble de mes plages nommées en une seule
Merci d'avance
Jean Marie
 
M

Minick

Guest
Salut,

Quelques petites améliorations et des commentaires

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

Dim Plage As String
Dim Nom As Object

For Each Nom In Application.Names
If ActiveSheet.Name = Nom.RefersToRange.Parent.Name Then 'ici on verifie que la plage nommée appartient bien a la feuille active (ce que j'avais oublié de faire)
Plage = Plage & Range(Nom).Address & "," 'ici on concatene toutes les plages en les separant par une virgule
End If
Next
If Plage <> "" Then ' si il y a bien des plages nommées dans la feuille active
Plage = Left(Plage, Len(Plage) - 1) 'on enleve la derniere ',' de la chaine

If Not Intersect(Target, Range(Plage)) Is Nothing Then 'si le dblclick est dans une cellule d'une des plages nommées
UserForm1.Show ' on affiche ton userform
End If
End If
End Sub


@+ Minick
 
C

CHti160

Guest
salut mon "Ch'timi"(Minick)
bonjour, bonsoir le "FORUM"
la nuit apporte des solutions, tu as réussi à régler mon problème celà
fonctionne et les explications m'ont permi de comprendre la totalité du code
j'ai pourtant regardé ce matin ,mais bon les ch'tis ne se lèvent pas de bonne heure(Lol) y fait fro là haut!!!!
mais je suis content j'apprends
j'ai rajouté un petit Cancel=True et c'est la rue Michel
donc si je ne te recroise pas sur le "FORUM" bonnes fêtes de fin d"Année
A+++
Jean Marie
 
C

CHti160

Guest
salut mon "Ch'timi"(Minick)
bonjour, bonsoir le "FORUM"
la nuit apporte des solutions, tu as réussi à régler mon problème celà
fonctionne et les explications m'ont permi de comprendre la totalité du code
j'ai pourtant regardé ce matin ,mais bon les ch'tis ne se lèvent pas de bonne heure(Lol) y fait fro là haut!!!!
mais je suis content j'apprends
j'ai rajouté un petit Cancel=True et c'est la rue Michel
donc si je ne te recroise pas sur le "FORUM" bonnes fêtes de fin d"Année
A+++
Jean Marie
 
C

CHti160

Guest
Re "Minick"

bon plus on y regarde et plus on se pose de questions.
Penses tu qu'il soit possible de récurer le nom de la plage celon la position de Target je m'explique:
If Not Intersect(Target, Range(Plage)) Is Nothing Then
UserForm1.Show
VarNom=PlageNommée(celle ou j'ai dblclicker).Name
ou un truc dans ce gout là
car dans ma procèdure, il me faut récupérer un nom et ce nom je l'ai attribué à l'une des plages nommées
si tu vois ce que je veux dire ????? Lol voir non, mais comprendre
celà m'éviterais de récupérer les coordonnées de Target pour localiser la plage et ensuite en fonction de celà ,le Nom
j'espère avoir été clair sinon je mettrai un fichier explicatif
D'avance merci
Jean Marie
 
M

Minick

Guest
Salut,

ché incore mi,
ben vi c bien moi Ch'ti Minick mais j'met que Minick ca va plus vite ;o)

alors avec ta nouvelle demande je change la structure du code pour ne pas faire de boucles inutiles
ca donne ca:

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

Dim Plage As String
Dim Nom As Object

For Each Nom In Application.Names
If ActiveSheet.Name = Nom.RefersToRange.Parent.Name Then 'ici on verifie que la plage nommée appartient bien a la feuille active (ce que j'avais oublié de faire)
If Not Intersect(Target, Range(Nom)) Is Nothing Then 'ici on regarde si le dblclick est dans la plage nommée
UserForm1.Show ' on affiche ton userform
MsgBox Nom.Name ' la pour l'exemple j'affiche la nom de la plage nommée dans une msgbox
Exit For ' on quitte la boucle for pour pas boucler dans le vide pour rien
End If
End If
Next
End Sub




@+ Minick

Ps: Bonnes fêtes à toi egalement ainsi qu'au forum
 
C

CHti160

Guest
bonsoir Chti

bon mi' je viens de finir de minger chu pas trop atteind
et ch'te r'merci d'avinche Lol
je vois que t'es un bon (comme tous les ch'ti d'ailleur Lol)
je testerai demain ta prose.
Pourras tu m'expliquer la signification de "Nom.RefersToRange.Parent? un peu chiant quand même le boyau Rouge un :eek:)))
merci d'avance
A+++
Jean Marie
 
M

Minick

Guest
Salut,

Le but de Nom.RefersToRange.Parent est de connaitre
le nom de la feuille où se trouve la plage nommée.

Dans la premiere mouture que j'avais donnée cela servait à ne pas inclure
de plage nommée d'autres feuilles.

Dans la derniere mouture cela permet de ne pas faire planter le Range(Nom), j'aurai pu le gerer avec un On Error... mais je trouve
que c'est lplus clean comme cela.

J'espere que c'est suffisamment clair

@+ Minick
 

Discussions similaires

Statistiques des forums

Discussions
312 594
Messages
2 090 088
Membres
104 371
dernier inscrit
Momo6767