Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Chercher une shape dans plusieurs onglets

Curtis Newton

XLDnaute Nouveau
Bonjour,

Je ne parviens pas à appliquer une macro sur plusieurs onglets.

Sur le fichier joint, dans l'onglet base de données, une macro permet depuis une forme (rectangle transparent) de trouver une shape sur l'onglet RdC ou l'onglet 1er.

Une macro est affectée selon l'onglet à atteindre.

Je ne parviens pas à modifier le code pour n'utiliser qu'une seule macro quelque soit l'onglet.

Merci pour votre aide.
 

Pièces jointes

  • Curtis_NewtontTest.xlsm
    53.3 KB · Affichages: 24

sousou

XLDnaute Barbatruc
bonsoir
essaie d'affecter à cette macro, je n'ai traité que de la recherche
Sub gotoplansousou()
Dim f, s, texte
For Each f In Sheets
If f.Name <> "Base de données" Then
texte = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
For Each s In f.Shapes
If s.TextFrame.Characters.Text = texte Then
f.Activate
s.Select
Exit Sub
End If
Next
End If
Next
End Sub
 

Curtis Newton

XLDnaute Nouveau
Merci beaucoup, cela répond parfaitement à mes attentes.

J'ai appliqué cette macro à mon fichier original. La macro butte sur les plans que j'insère dans les feuilles.

Je ne sais pas où ajouter la condition pour que la macro zappe les fichiers images nommés PLAN
 

Curtis Newton

XLDnaute Nouveau
Bonsoir,

J'ai donc utilisé le code ci-après :


Sub TEST()
Dim f As Worksheet
Dim s As Shape
Dim texte As String
For Each f In Sheets
If f.Name <> "Accueil" And f.Name <> "Base de données" And f.Name <> "Plan de masse" Then
texte = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
For Each s In f.Shapes
If s.TextFrame.Characters.Text = texte Then
f.Activate
s.Select
Exit Sub
End If
Next
End If
Next
End Sub

Pourriez-vous m'aider à ajouter une ligne du genre : if s.name <> "PLAN"... Pour que l'image de fond ne soit pas comprise dans la recherche.

Chose étrange, lorsque que cette image est mise en avant plan, la macro fonctionne...
 

sousou

XLDnaute Barbatruc
Bonjour
Peux tu envoyer un exemple (images nommées plan??)

Sans doute ceci si tu parle bien du nom de la shape
si non: and s.textFrame.characters.text then

Sub TEST()
Dim f As Worksheet
Dim s As Shape
Dim texte As String
For Each f In Sheets
If f.Name <> "Accueil" And f.Name <> "Base de données" And f.Name <> "Plan de masse" Then
texte = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
For Each s In f.Shapes
If s.TextFrame.Characters.Text = texte and s.name<>"PLAN" Then
f.Activate
s.Select
Exit Sub
End If
Next
End If
Next
End Sub
 
Dernière édition:

Curtis Newton

XLDnaute Nouveau
Bonjour,

J'ai omis de joindre le fichier où j'avais inséré une image de fond que j'avais renommée PLAN sur tous les onglets...

Je travaille dans l'urgence sur ce fichier. Avec l'aide de Sousou sur ce forum, et celle apportée par un membre d'un autre forum, je peux travailler avec deux macros quelque-soit le nombre de lignes ou de formes créées.

Voici le code qui répond à mon interrogation :

Public Sub TEST()
Dim ws As Worksheet
Dim Shp As Shape
Dim shpText As String
shpText = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
For Each ws In ActiveWorkbook.Worksheets
Select Case ws.Name
Case "Accueil", "Base de données", "Plan de masse", "Ne pas effacer", "Ne pas effacer 2":
Case Else:
For Each Shp In ws.Shapes
If Shp.Type <> msoPicture Then
If Shp.TextFrame.Characters.Text = shpText Then
ws.Activate
Shp.Select
Exit For
End If
End If
Next
End Select
Next
End Sub

Bonne journée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…