sélection d'un objet shape par le texte et non pas par son nom

phil75016

XLDnaute Junior
Bonjour

J'ai un classeur avec 50 feuilles. Dans chaque feuille il y a un shape dont le texte est "retour menu". Mon problème c'est que ce shape n'est pas nommé pareil dans chaque feuille, quelquefois c'est ("Zone de texte 1") ou bien Shapes("Zone de texte 30")...
Comme je voudrais changer la macro affectée à ce "retour menu", je voudrais pouvoir sélectionner automatiquement ce shape par le texte qu'il contient et non pas par son nom.

Je vous remercie pour votre aide et j'espère avoir été assez clair.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : sélection d'un objet shape par le texte et non pas par son nom

Bonjour,

S'il y a un seul shape dans la feuille


Sheets(1).Shapes(1).Select


texte = Sheets(1).Shapes(1).TextFrame.Characters(Start:=1, Length:=3).Text


For Each s In Sheets(1).Shapes
If s.TextFrame.Characters(Start:=1, Length:=3).Text = "abc" Then
MsgBox "abc"
End If
Next s



JB
 

mromain

XLDnaute Barbatruc
Re : sélection d'un objet shape par le texte et non pas par son nom

En partant du code de JB:

Code:
Public Sub a()

Dim monShape As Excel.Shape
Dim isShape As Boolean
isShape = False

Dim curSheet As Excel.Worksheet
Dim s As Excel.Shape

'parcourir toutes les feuilles
For Each curSheet In ThisWorkbook.Sheets
    isShape = False     ' on par du principe qu'il n'y a pas de shape contenant "toto" dans la feuille
    
    For Each s In curSheet.Shapes 'parcourir tous les shape de la feuille actuelle
    If s.TextFrame.Characters(Start:=1, Length:=4).Text = "toto" Then
        ' si le contenu commence par "toto"
        Set monShape = s    'récupérer le shape
        isShape = True
    End If
    Next s
    
    'pour chaque page, afficher le nom du shape si il existe
    If isShape Then
        MsgBox ("feuille: " & curSheet.Name & vbNewLine & "nom du shape contenant ""toto"": " & monShape.Name)
    Else
        MsgBox ("pas de shape contenant ""toto"" dans la feuille: " & curSheet.Name)
    End If
Next curSheet


End Sub


dans cette macro, il faut qu'il y ait qu'un seul Shape contenant "toto" par feuille.
Si il y en a plusieurs, tu peux t'arrenger avec une Collection...

A+, bon Excel
 

phil75016

XLDnaute Junior
Re : sélection d'un objet shape par le texte et non pas par son nom

Merci également pour ton aide mais franchement je n'y comprends rien. Je suis trop nul pour arriver à m'en sortir avec ce que tu m'as donné. N'y a t'il pas un moyen plus simple?
 

mromain

XLDnaute Barbatruc
Re : sélection d'un objet shape par le texte et non pas par son nom

Merci également pour ton aide mais franchement je n'y comprends rien. Je suis trop nul pour arriver à m'en sortir avec ce que tu m'as donné. N'y a t'il pas un moyen plus simple?


Ben je t'avoue, je suis pas assez bon pour trouver un autre moyen.
Par contre, si tu veux, je peux t'envoyer une macro équivalente, commentée au maximum...

tiens moi au courant

A+
 

Discussions similaires

Réponses
26
Affichages
409

Statistiques des forums

Discussions
312 305
Messages
2 087 081
Membres
103 457
dernier inscrit
fab2614