|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2010 Messages : 8 ![]() |
Bonjour à toutes et à tous,
je sollicite l'aide précieuse de la communauté pour le problème suivant: -par macro, je copie-colle une image qui me sert de bouton de navigation dans une feuille Excel; -après avoir créée et positionnée cette image comme souhaité dans la feuille Excel, je souhaite affecter une macro appelée ola qui soit activée quand on clique sur l'image. les images sont créées dynamiquement d'où l'utilisation d'un compteur "j" j'ai essayé avec .OnAction comme ci-dessous mais je récuère une erreur 1004 Code :
ActiveSheet.Shapes("Image" & j).OnAction = "ola" Merci d'avance
|
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 898 ![]() |
Bonjour,
Ci dessous une solution, mais en utilisant l'objet image (activeX) et non shape J'utilise VBComponent pour créer la macro évènement click de l'objet image Code :
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|||
|
|
10
|
|
|
#3 | ||||||
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonsoir,
Ce qui plus bas fonctionne chez moi (Excel 2007), le nom du Shape est passé en argument. Je vois que tu n'as pas mis d'espace entre "Image" et le numéro, c'est peut être de là que vient l'erreur : Code :
Code :
Code :
|
||||||
|
|
10
|
|
|
#4 |
![]() ![]() |
Quel est ton code de création d'image .?
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2010 Messages : 8 ![]() |
rebonjour à tous les 3,
merci beaucoup pour vos messages et vos suggestions de solutions. Pour répondre à la question de bbil, je copie colle une image (Contrôle ActiveX) préexistante dans la feuille et je la positionne par code VBA à l'endroit souhaité dans la feuille. J'ai essayé les codes de JP et Theze. -Pour la proposition de code de jpfontaine : j'ai du au préalable activer "Microsoft Visual Basic for Applications Extensibility 5.3." Y-a-t-il d'autres références à activer ?" J'ai copié-collé le code dans un Module mais la ligne de code suivante pose problème Set VbMod = ThisWorkbook.VBProject.VBComponents.Item("Feuil1") comme test, j'ai essayé un Msgbox pour récupérer la propriété Name de ThisWorkbook.VBProject.VBComponents.Item("Feuil1") mais ca ne marche pas. Des suggestions jp ? -Pour la proposition de Thèze, j'ai essayé d'intégrer ton code mais je récupère une erreur 1004. |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 898 ![]() |
Je te joint un fichier exemple
Affecter une macro par code (VBCOMPONENT).xls
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
10
|
|
|
#7 |
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonjour,
Au début tu parle de Shape avec OnAction et maintenant tu parle de contrôle ActiveX, ce n'est pas la même chose. En double cliquant sur ton image, tu te retrouve dans le module de la feuille où se trouve le contrôle image avec le squelette de l'évènement Click. Il te suffit de "pré écrire" le code dans le module et une fois l'image collée, si tu clique sur cette dernière la proc évènementielle sera exécutée. Hervé. |
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Inscription : juin 2010 Messages : 8 ![]() |
rebonjour,
et merci de vos précédentes réponses: Pour Jérôme, j'ai essayé de faire la macro du fichier que tu m'as envoyé et ça n'a pas marché sur mon poste ! bug au meme endroit: Code :
Set VbMod = ThisWorkbook.VBProject.VBComponents.Item("Feuil1") Pour Thèze, je ne suis pas expert enVBA malheureusement, et j'ai encore des soucis pour définir proprement les objects que je manipule, dsl! Pour ta proposition de "pré-écriture" du code, ca ne répond pas à mon problème car je ne sais pas combient d'images seront crées par l'utilisateur lors de l'utilisation du workbook. Si vous avez d'autres suggestions, je suis preneur ! |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 898 ![]() |
Juste pour etre sur.
Ce code fait référence à la Feuil1. as tu une feuille de ce nom? Code :
Set VbMod = ThisWorkbook.VBProject.VBComponents.Item("Feuil1")
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
10
|
|
|
#10 | |
![]() ![]() |
Citation:
toutes tes images doivent-elles appeler le même code ?
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
10
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : juin 2010 Messages : 8 ![]() |
Pour Jérôme:
oui j'ai bien une feuille qui s'appelle "Feuil1" Pour bbil : voici ma macro annotée, si ça peut aider à voir l'origine du problème Code :
as tu une explication pour le bug de ton fichier excel d'exemple sur mon poste ? (j'ai essayé sur mes versions d'Excel 2003 et 2007° merci d'avance pour ta réponse |
||
|
|
00
|
|
|
#12 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 898 ![]() |
Peux tu expliquer ce qui ne fonctionne pas. Message d'erreur et ligne qui bloque
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
10
|
|
|
#13 | ||||
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonjour,
Il est possible d'utiliser un module de classe afin d'affecter la même proc à tous les contrôles Image, ensuite aiguiller le traitement dans le module standard. Pour le test, ajouter un module de classe appelé "ClsImage" puis mettre ce code dans le module ClsImage : Code :
Code :
J'ai fait un test en appelant "TblImage" en fin de ton code mais ceci ne fonctionne pas tout le temps, je soupçonne un problème de délai. Hervé. |
||||
|
|
10
|
|
|
#14 |
|
Invité de passage
![]() Inscription : juin 2010 Messages : 8 ![]() |
Bonjour,
pour Jérôme: la ligne qui pose problème à l' exécution du code est a la ligne 9 dans l'affectation de la variable VbMod Code :
Set VbMod = ThisWorkbook.VBProject.VBComponents.Item("Feuil1") merci pour cette nouvelle proposition! je ne suis pas assez expert en VBA pour avoir eu a creer des modules de classe, c'est une super occasion. je vais essayer d'integrer votre code. Merci encore pour votre aide précieuse a tous les 2 |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : juin 2010 Messages : 8 ![]() |
Bonjour,
Pour Thèze, j'ai intégré ton code, et ca a marché, merci beaucoup, je devrais pouvoir y arriver maintenant. En plus, grace à toi, j'ai appris l'existance des modules de classe. j'avais travaillé sur une alternative avec des Shape rectangle et OnAction avec une image en guide remplissage. Avec les Images ActiveX, je vais pouvoir bénéficier des évènements associés, ce qui n'est pas le cas des Shapes. C'est exact ? Pour Jérôme: l'erreur que je récupère a l'exécution de la macro test est '1004' a la ligne 9 lors de la procédure d'affectation de la variable VbMod. Merci à tous les 2 pour tout le temps que vous avez passé sur mon probleme j'espere pouvoir aider a mon tour des gens a bientot Rémi |
|
|
00
|
|
|
#16 | |
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonjour,
Citation:
Hervé. |
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com