![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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) |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#11 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#13 (permalink) |
|
Guest
Messages: n/a
|
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 )))merci d'avance A+++ Jean Marie |
|
|
#14 (permalink) |
|
Guest
Messages: n/a
|
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 |
| Liens sociaux |
| Outils de la discussion | |
|
|