rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[Excel vba] Pb affectation macro -> objet

xjl, le mercredi 18 avril 2007 à 14:23:55
Salut,

j'ai un petit problème d'affectation:

N = Right(Cells(ligne, 2).Value, 3)
Sheets(Cells(ligne, 1).Value).Shapes(Cells(ligne, 2).Value).OnAction = "SELECTION_TRONCON(N)"

Le débogage me donne une erreur 1004: Cette formule est trop compliquée pour être affectée à un objet

En fait j'ai une macro qui doit affecter une autre macro (SELECTION_TRONCON(N)) à un objet en fonction du numéro de tronçon contenu en fin de cellule (ligne,2).

Quelqu'un saurait-il comment je peux modifier la syntaxe pour que ça passe svp ?

Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0
Répondre à xjl  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
masterseb, le mercredi 18 avril 2007 à 19:29:06
salut xlj,
je pense que tu pourrais utiliser dans ta macro la méthode Select Case afin de déterminer les case (valeur ligne,2). En fonction de ces valeur tu appelerais la macro concernée avec la méthode Call + nom de macro.

cordialement

seb
a+
Répondre à masterseb

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xjl, le jeudi 19 avril 2007 à 08:09:09
En effet c'est possible, le seul problème c'est que ma macro affecte une macro à des shapes, et que j'en ai qq centaines, c'est-à dire que si j'utilise cette méthode, il me faudra une macro par shape alors que je voudrais affecter une même macro à toutes les shapes qui prendrait comme variable la fin du nom de la shape... Je ne sais pas si c'est très clair ?!

Merci quand même et toute nouvelle idée sera la bienvenue ! ;-)
Répondre à xjl

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
masterseb, le vendredi 20 avril 2007 à 01:14:49
Salut,
je crois avoir compris en partie ton problème. J'ai fait un exemple qui pourra peut-être te servir. Il prend 2 minute à réaliser.

1) Dans une feuille excel, dessine 2 rectangles. En haut à gauche, tu aura Rectangle 1, et Rectangle 2 dans la barre de nom à coté de la barre de texte.
2) Dans ta cellule A1, inscrit 1
3) crée la macro suivante :

Sub selectionshape ()

A = Cells(1, 1).value
ActiveSheet.Shapes("Rectangle " & A).Select

End Sub

4) Execute ta macro. Si ta cellule A1 contient la valeur1, ton Rectangle 1 sera selectionné, s'il contient la valeur 2, ton rectangle 2 sera selectionne.

Il ne s'agit que d'une idée, j'espère qu'elle pourra t'aider. Tiens moi au courant
Répondre à masterseb

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xjl, le vendredi 20 avril 2007 à 08:27:41
Merci, mais ça ne correspond pas vraiment à ce qu'il me faut.

Il faudrait que je puisse avoir sur le OnAction de mes shape la même macro, et que cette macro soit capable de détecter le nom de la shape qui vient d'être cliquée (avec un truc du genre ActiveShape.Name, mais ça ne marche pas) pour affecter le numéro du tronçon au paramètre N pour ensuite lancer la macro SELECTION_TRONCON(N).

En fait le principal problème, c'est que je ne connais pas la syntaxe qui peut me renvoyer le nom de la shape qui vient d'être cliquée, pour le reste ça va aller tout seul !

Merci d'avance pour vos idées.
Répondre à xjl

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
masterseb, le vendredi 20 avril 2007 à 16:45:59
Salut xlj, j'ai enfin compris ce que tu voulais, j'ai fait des test et chez moi, ça marche. En fait l'erreur 1004 est générée par la variable (N) de ta Macro SELECTION_TRONCON car le OnAction n'accepte que du texte entre gillemets.

alors j'ai essayé les modification suivantes :

1) Déclare ta variable N en Public (Public N >>> tout au dessus)
2) pour le OnAction, remplace "SELECTION_TRONCON(N)" par "ShapeClick"
3)crée une macro intermédiaire appelée ShapeClick comme suit :

Sub ShapeClick()

N = Right(Cells(ligne, 2).Value, 3)
Call SELECTION_TRONCON(N)

End Sub

pour vérifier, rajoute temporairement cette ligne dans ta macro SELECTION_TRONCON(N) :

j = Worksheets(1).Shape(N).Name 'adapte à ton code si nécessaire
msgbox j

Contacte moi si problème, je peux t'affirmer que lorsque je clique chez moi sur un shape, il me renvoie son nom.

a+ seb
Répondre à masterseb

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xjl, le lundi 23 avril 2007 à 08:34:19
Salut,

j'ai déjà testé quelquechose d'équivalent, mais le seul problème c'est que la variable ligne n'est pas incrémentée ici, donc la cellule dans laquelle on ira chercher le nom de la shape qui viendra d'être cliquée n'aura rien à voir avec cette shape !

Je vois bien comment lancer une macro à partir du clic sur l'une des shape, mais il me parait plus compliqué de récupérer le nom de la shape par laquelle vient d'être lancée la macro...

Merci pour tes efforts !
Répondre à xjl

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xjl, le jeudi 26 avril 2007 à 15:37:56
Salut,

je n'ai toujours pas trouvé de solution à ce problème, alors si qqun à une idée, je suis preneur...

Merci d'avance ! ;-)
Répondre à xjl

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ChrisKang, le samedi 28 avril 2007 à 18:18:58
J'avais le même problème que toi, xjl, et je viens de trouver la solution à l'instant :
Depuis chacun de tes shapes, il te suffit d'appeller la même macro, sans paramètre.
Ensuite, dans cette macro tu peux retrouver l'identité du shape appellant grâce à la variable "Application.Caller".
Si le propriété Name de tes shapes est bien renseignée, tu devrais pouvoir appeller la bonne macro parametrée à partir de ça.
Bon courage, en esperant que ca te débloque comme ça l'a fait pour moi.
Chriskang
Répondre à ChrisKang

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le lundi 30 avril 2007 à 14:03:53
Bonjour,

une histoire de syntaxe !

la ligne :
Sheets(Cells(ligne, 1).Value).Shapes(Cells(ligne, 2).Value).OnAction = "SELECTION_TRONCON(N)"


devrait se lire :
Sheets(Cells(ligne, 1).Value).Shapes(Cells(ligne, 2).Value).OnAction = "'SELECTION_TRONCON" & "(" & """" & N & """" & ")'"

voici un exemple fonctionnel dans ma routine :

'Création de la chaine de commande pour la propriété VBA <.OnAction>
ChaineCommande = "'CreationPageBarreOutils " & "(" & """" & NumPage & """" & ")'"
'Affectation de la chaine de commande à la propriété VBA <.OnAction>
Application.CommandBars("Bloc").Controls(Boucle).OnAction = ChaineCommande

Bon courage

Lupin.
Répondre à Lupin.A

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xjl, le mercredi 2 mai 2007 à 08:44:07
Salut,

vraiment bien vu le coup du Application.Caller qui revoit directement le nom de la shape !!

Merci à toi aussi Lupin, je suis sûr que ta solution fonctionne aussi mais c'est un peu plus compliqué à mettre en place...

Merci à tous !
Répondre à xjl

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 bourak, le lundi 28 mai 2007 à 16:32:23
bonjour, j'ai un problème, je lance les fichier .xls en double clic sur la souri mais ils ne s'ouvrent pas, je doit passer obligatoirement par lancer l'excel et fichier, ouvrir. sachant que les autres fichiers *.doc etc s'ouvrent automatiquement par double clic
merci
Répondre à bourak
Liste déroulante excel vba (Résolu)Salut a tous je suis en train de faire un petit programme sous excel avec des macros. je souhaite créer une liste déroulante sur ma feuille excel, ajouter des données présentes dans un tableau que je crée en vba et choisir dans ma liste sur ma feuille... www.commentcamarche.net/forum/affich-1266881-liste-deroulante-excel-vba
Excel VBA - Textbox à saisie conditionnée (Résolu)Bonjour, Après avoir longtemps suivi en visiteur, j'ai décidé de m'inscrire, pour faciliter les échanges. Une fois n'est pas coutume, je suis sur une petite programmation Excel VBA pour laquelle je rencontre quelques difficultés. Je... www.commentcamarche.net/forum/affich-3696419-excel-vba-textbox-a-saisie-conditionnee
VBA excel vers suite open office (Résolu)Bonjour, J'ai fait un "pseudo programme" sous forme d'un classeur excel contenant des macro en VBA (que j'apprend depuis peu). Comme celui-ci consiste à reviser son vocabulaire anglais j'ai été solicité par des collègues de mon... www.commentcamarche.net/forum/affich-4956965-vba-excel-vers-suite-open-office
Proteger vos documents Word contre les macrovirusQu'est ce qu'un Virus Macros (ou Macrovirus) ? Un macrovirus est une macro, c'est-à-dire un script intégré dans un document visant à automatiser certaines tâches. Les scripts sont généralement développés en VBA. Les macros ont pour but... www.commentcamarche.net/faq/sujet-12755-proteger-vos-documents-word-contre-les-macrovirus
VBA lance un .bat qui lance un .init (Résolu)Bonjour, Je trafficote pour lancer un script shell unix depuis Excel. Pour l'instant, j'ai deux choses : - un .bat qui lance un .init qui lance mon .sh - un macro excel vba qui lance mon .bat Si je lance mon .bat à la main, ça marche MAIS...... www.commentcamarche.net/forum/affich-3907285-vba-lance-un-bat-qui-lance-un-init
Macro excel envoi email avec piéce jointe (Résolu)Bonjour , je suis nouveau stagiaire . Ma question est comment faire pour creer une macro excel qui permet d'envoyer automatiquement un mail (via outlook) avec classeur excel joint. La macro doit ouvrir la feuille excel à mettre à jour (adr de la... www.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe
EXCEL RECHERCHE ET COPIE D UNE LIGNE (Résolu)bonjour et merci d avance je souhaiterai dans un tableau excel créer une macro afin de chercher un mot dans une colonne et copier ensuite toute la ligne dans un onglet diffférent . Après les divers essais que j ai fait j arrive bien à selectionner la... www.commentcamarche.net/forum/affich-1769377-excel-recherche-et-copie-d-une-ligne
Toutes les réponses pour « [Excel vba] Pb affectation macro &gt; objet »