Associer une macro de recherche à une forme
Bonjour à tous et tout d'abord merci d'avance pour les éléments que vous pourriez apporter.
Voilà je suis débutant en macro et j'avoue caler sur la finalisation de mon fichier...
Il y a normalement plus de 20 feuilles dans mon fichier mais pour l'exemple de travail, je vous propose d'exposer ma problématique sur 2 feuilles...
1ère feuille :
une feuille dont le but est d'accueillir un fond de carte et sur lequel je viens superposer des formes géométriques (rectangles, trapèzes..).
Pour les rectangles, il y a des références inscrites dedans type C09.00, C09.01, C09.02 ou C20.00.......pour les trapèzes CM02.03, CM52.00
Chaque figure est donc unique.
2ème feuille :
Elle liste les références des informations avec énormément de références associées : C01.00 vers lesquelles les figures doivent pointer.
Ainsi, j'ai créé avec l'enregistrement macro la macro suivante avec l'idée que lorsque je clique sur la figure désignée, cela me renvoie automatiquement
vers la feuille de données dans laquelle sont inscrites toutes les références en surlignant uniquement celle dont j'ai besoin...
Sub COUP0900()
Sheets("Feuil2").Select
Columns("B:B").Select
Selection.Find(What:="C09.00", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
End Sub
Problème :
Lorsque je crée d'autres macros auxquelles j'attribue un nom proche de ma référence type Sub COUP0900 ou Sub COUP0901....il me dit qu'il existe un conflit dans les noms des macros et cela après une dizaine de création de macros... je ne peux donc plus rien faire et tout se met en défaut...."erreur de compilation"
Je ne peux pas travailler autrement (tout repose sur ce type d'organisation) et ne vois vraiment pas comment procéder.
Autre problème de base peut-être, lorsque je veux enregistrer mon fichier il est écrit que "les fonctionnalités suivantes ne peuvent pas être enregistrées dans les classeurs sans macro.....: projet VB
Du coup je suis susceptible de tout perdre
Je vous remercie d'avance pour votre aide. Cordialement,
Bonjour,
Une astuce différente mais qui va, je pense, te faire gagner du temps :
Pourquoi ne pas nommer ta forme avec le nom que tu désires et y associer une macro UNIQUE où c'est le nom de la forme qui est recherché ? Ainsi tu n'auras qu'une macro dans ton classeur et tout se jouera sur la désignation de ta forme dans ta macro avec quelque chose du style Shape.Name dans ton "What" du Vlookup. Je pense que celà est possible et tu n'auras plus 200 macros avec un nom similaire.
En restant à ta dispo pour t'assister.
Bonne journée.
PS : Un fichier avec macro est la plupart du temps enregistré sous format .xlsm, c'est obligatoire il me semble.
- Messages
- 2'417
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonjour toutes et tous
trop long ci-joint mdr, je préfère la soluce d'Ergotamine que, je salut en passant
ci-joint
crdlt,
André
Bonjour à tous,
un peu la même idée, mais basée sur le texte du bouton :
Sub cherche(ch As String)
Dim c As Range
Sheets("Feuil2").Select
Set c = Columns("B:B").Find(What:=ch, LookIn:=xlFormulas, LookAt:=xlWhole)
If c Is Nothing Then
MsgBox ch & " non trouvé"
Else
Application.Goto c, True
End If
End Sub
Sub COUP0900()
cherche ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Text
End SubTous les boutons auront la même ligne de code.
Par ailleurs tu dois rechercher avec LookAt:=xlWhole. Totalité du texte et non xlPart (=contient)
eric