Désigner la plage nommée d'une cellule recherchée

Bonjour à tous,

J'aimerais rechercher un mot précis et lorsque ce dernier est trouvé, je souhaiterais savoir pour quelle plage nommée il appartient.

Sub test()
    Dim Mot$
    Dim Ligne As Range
    Mot = "Grande S"
    Ligne = [modele].Find(Mot, LookAt:=xlWhole)
    '--

    MsgBox "Ce mot appartient à la plage nommée : " & Range("X").Address

End Sub

Merci d'avance.

Bonjour, démonstration avec la cellule active :

Sub Demo()
         Dim Nom As Name
    For Each Nom In ThisWorkbook.Names
        If Not Intersect(Nom.RefersToRange, ActiveCell) Is Nothing Then
            MsgBox ActiveCell.Address(0, 0) & " est dans le nom " & Nom.Name
            Set Nom = Nothing
            Exit For
        End If
    Next
End Sub

Bonjour,

Essaie ainsi :

Option Explicit
Public Sub Cherche_Mot()
Dim Mot As String, c As Range, nm As Name
    Mot = "Grande S"
    For Each nm In ActiveWorkbook.Names
            Set c = Range(nm.Name).Find(Mot, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                MsgBox "Ce mot fait partie de la plage """ & _
                       nm.Name & """," & Chr(10) & "adresse" & _
                       nm.RefersTo, vbInformation, "Mot : " & Mot
                Exit For
            End If
    Next nm
    Set c = Nothing
End Sub

Bonjour Marc, Jean-Eric,

Bon le code de Marc, me génère cette erreur :

Erreur d'exécution '1004':

Erreur définie par l'application ou par l'objet

If Not Intersect(Nom.RefersToRange, ActiveCell) Is Nothing Then

Le code de Jean-Eric fonctionne.

Seulement, j'ai un souci :

Le mot "Grande S" appartient bien à deux plages nommées. ([Modele] et [Gs])

Alors pourquoi le code à pu éviter de citée la plage "Modele" (Plage globale) comme plage contenant ce mot en plus de la plage trouvée "Gs" ?

Merci.

Bonjour,

Que se passe-t'il si tu renommes [Modèle] en [aModèle]

Mon code fonctionne sans souci de mon côté …

S'il y a plusieurs plages en réponse, avec une once de logique enlever alors la ligne Exit For

Bonjour,

Bonjour Marc L,

J'ai la même erreur 1004 avec ton code.

Cdlt.

Merci Jean-Eric mais toujours aucun souci de mon côté : ce doit être alors une histoire de version d'Excel.

Faut dire aussi comme je ne peux pas télécharger de classeur avec macro, j'ai utilisé un fichier de tests perso …

Je testerais plus tard lorsqu'un portable en 2007 sera de retour.

Bonsoir,

Jean-Eric a écrit :

Bonjour,

Que se passe-t'il si tu renommes [Modèle] en [aModèle]

Le code sorte à la première plage retrouvée puisque [aModele] commence par "a" et vient avant le de "G" de [Gs]

Bonjour,

Alors que fait-on? Quel est l'objectif?

Cdlt.

Bonjour,

Option Explicit
Public Sub Cherche_Mot()
    Dim Mot As String, c As Range, nm As Name
    Mot = "Grande S"
    For Each nm In ActiveWorkbook.Names
        If nm.Name <> "Modele" Then
            Set c = Range(nm.Name).Find(Mot, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                MsgBox "Ce mot fait partie de la plage """ & _
                       nm.Name & """," & Chr(10) & "adresse" & _
                       nm.RefersTo, vbInformation, "Mot : " & Mot
                Exit For
            End If
        End If
    Next nm
    Set c = Nothing
End Sub

Je viens de tester avec une autre version d'Excel : toujours pas de souci …

Soit quelque chose a changé dans la version 2010, soit c'est une question de contexte - mon inclinaison - du classeur joint …

Rechercher des sujets similaires à "designer plage nommee recherchee"