Groupe de cellules nommées, inclus dans un plus grand groupe

  • Initiateur de la discussion Initiateur de la discussion Gruick
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gruick

XLDnaute Accro
Bonjour à tous,
Et merci de perdre quelques neurones à ce problème.
L'exemple joint montrera ce que je n'arrive pas à résoudre, en résumé, il s'agit en sélectionnant une cellule, que ma macro me dise que cette cellule est dans la zône "A", elle même incluse dans la zône "B".
Je bloque, je coince...😕
Donc, j'implore...
Encore merci d'avance

Gruick
 

Pièces jointes

Re : Groupe de cellules nommées, inclus dans un plus grand groupe

Bonjour Gruick, bonjour à tous

si tu supprimes ton exit for tu verras apparaître ton 2ème nom.

personnellement, au delà du intersect is nothing, je vérifie l'adresse de l'intersect pour garantir l'inclusion (cas où tu sélectionnes une plage, ce n'est pas parce qu'il y a intersection qu'il y a inclusion).

donc, sur la base du A inclus dans B <=> A inter B = A, je ferais plutôt :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim nom As Names
Dim i As Integer
Set nom = ActiveWorkbook.Names
For i = 1 To nom.Count
    Set isect = Intersect(Target, Range(nom(i)))
    If Not (isect Is Nothing) Then
        If isect.Address = Target.Address Then
        Set trouvé = nom(i)
        MsgBox trouvé.Name
        End If
    End If
Next
End Sub
si ton besoin est de faire apparaître le nom de la région après celui du département, tu peux soit jouer sur le nom de la région en mettant un "z" devant et en le retirant à l'affichage (une bidouille, quoi!) soit tu te fais une table et un recherchev bien placé fera l'affaire.

A+
 
Re : Groupe de cellules nommées, inclus dans un plus grand groupe

Bonjour Gruick et le Forum,

Si j'ai bien compris le problème, tu trouveras en pièce jointe quelques idées pour le résoudre ....

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Cells.Count = 1 Then 'Vérification qu'une seule cellule a été sélectionnée

    Set RngWrk = Range("I:K")  'Réserver trois colonnes pour la zone de travail (Peuvent être masquées)
    RngWrk.ClearContents
    i = 1

    ' Recherche de tous les ranges incluant la zone sélectionnée
    For Each Nam In ActiveWorkbook.Names
        If Not Intersect(Selection.Cells(1), Nam.RefersToRange) Is Nothing Then
            RngWrk.Cells(i, 1) = Nam.Name
            RngWrk.Cells(i, 2) = Nam.RefersToRange.Cells.Count
            RngWrk.Cells(i, 3) = Nam.RefersToRange.Cells(1, Nam.RefersToRange.Columns.Count).Value
            i = i + 1
        End If
        Next Nam
    
    ' Tri des Ranges sur nombre de cellules pour reconstituer la hiérarchie de regoupement
    RngWrk.Sort Key1:=RngWrk.Cells(2), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
  
    ' Préparation et affichage du message résultat
    Msg = "Vous avez sélectionné :" & Chr(13)
    i = 1
    While RngWrk.Cells(i, 1) <> ""
        Msg = Msg & RngWrk.Cells(i, 3) & Chr(13)
        i = i + 1
        Wend
    
    If i > 1 Then MsgBox Msg
    RngWrk.ClearContents
    
 End If
 
End Sub

Bon courage pour la suite .
 

Pièces jointes

Re : Groupe de cellules nommées, inclus dans un plus grand groupe

Waouu !
C'est du rapide.

Merci beaucoup ODVJ
La macro privée de l'exit for me donne un bon resultat, mais comme elle continue, elle va voir au coin supérieur gauche de la zône Picardie que la macro sélectionne d'office, et me ressort SOMME. Sinon, l'idée des z, je l'avais exprérimentée, sans succès. Bravo pour tes explications.

Merci beaucoup Xanork
Faire une table, c'est ce que je voulais éviter, sinon, ça me servira pour autre choses, une bonne idée n'est jamais perdue.

Merci beaucoup Omicron.
même si on s'éloigne de l'idée originale
La macro n'a marché qu'une fois, la première, après elle m'a mis un message d'erreur, tout en faisant le boulot néanmoins. Je me suis donc permis de regarder quelle instruction était fautive, de mettre une apostrophe devant, et là, miracle, c'est mieux, plus de message d'erreur et resultat conforme.
voilà la fautive :
RngWrk.Sort Key1:=RngWrk.Cells(2), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Ainsi, je vais m'inspirer de vos trois solutions, mais il me vient une idée, sur la solution d'ODVJ, si je déterminais le niveau hierarchie au niveau de la boucle...
A suivre, je vous tiens au courant...

Mille merci encore
 
Dernière édition:
Re : Groupe de cellules nommées, inclus dans un plus grand groupe

Bon,
Je viens de mettre les 2 instructions magiques avant la fin de la boucle i :
j=j+1
if j=2 exit for (qui revient en force) (il est têtu celui là)
et de changer le nom "PICARDIE" par "_PICARDIE"
ça maaaaaaaaaaaaaaarche !!!😀
puis j'ai poursuivi avec "__FRANCE" (2 tirets) avec un j limité à 3, avec succès.🙂
Il ne me reste qu'à me débarasser des tirets à l'affichage, car si je recopie sur une autre zône ou feuille, c'est résolu avec un replace "_" par "".

En espérant que ces astuces puissent servir pour d'autres programmes et d'autres gens....
Encore merci à tous
Gruick
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
6
Affichages
2 K
amodu1244
A
G
Réponses
2
Affichages
1 K
G
D
Réponses
5
Affichages
11 K
D
B
Réponses
6
Affichages
1 K
britchouleloup
B
Retour