Macro clic sur losanges nommés

Le
garnote
Bonjour, Bonjour au monde entier,

Sur une feuille de calcul, j'ai 45 losanges nommés
respectivement 1, 2, 3, ,44, 45 auxquels sont
associés la même macro qui utilise Application.Caller.
Peut-on demander à une autre macro de cliquer sur
le losange 2 et le losange 5 ?

Merci, Merci.
Serge
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4221781
Dim SonNom As String, Sh As Object

****Application.Caller te retourne l'objet que tu as cliquer
SonNom = Application.Caller
**** Substitues l'index de SonNom par l'index du contrôle de ton choix

****Tu obtiens une varriable objet représentant le contrôle de ton choix
Set Sh = Feuil1.Shapes(SonNom).OLEFormat.Object

tu pourras utiliser l'objet pour le reste de ton code

MsgBox TypeName(Sh)
With Sh
'ton code
End With




"garnote"
Bonjour, Bonjour au monde entier,

Sur une feuille de calcul, j'ai 45 losanges nommés
respectivement 1, 2, 3, ... ,44, 45 auxquels sont
associés la même macro qui utilise Application.Caller.
Peut-on demander à une autre macro de cliquer sur
le losange 2 et le losange 5 ?

Merci, Merci.
Serge
garnote
Le #4221411
Salut Denis,

J'avais pensé à ça mais c'est plus compliqué !
Je voudrais que la macro "Déplace" s'exécute en utilisant
i = Application.Caller quand je clique sur un losange
et je voudrais pouvoir appeler "Déplace" en lui passant
certaines valeurs de i qui remplaceraient Application.Caller.
J'arrive à mes fins en appelant une seconde macro "Déplace2".
Est-ce possible de se passer d'une seconde macro?
Avec des arguments optionnels, peut-être?
Mais il n'y a pas péril en la demeure ;-)

Serge






"MichDenis"
Dim SonNom As String, Sh As Object

****Application.Caller te retourne l'objet que tu as cliquer
SonNom = Application.Caller
**** Substitues l'index de SonNom par l'index du contrôle de ton choix

****Tu obtiens une varriable objet représentant le contrôle de ton choix
Set Sh = Feuil1.Shapes(SonNom).OLEFormat.Object

tu pourras utiliser l'objet pour le reste de ton code

MsgBox TypeName(Sh)
With Sh
'ton code
End With




"garnote"
Bonjour, Bonjour au monde entier,

Sur une feuille de calcul, j'ai 45 losanges nommés
respectivement 1, 2, 3, ... ,44, 45 auxquels sont
associés la même macro qui utilise Application.Caller.
Peut-on demander à une autre macro de cliquer sur
le losange 2 et le losange 5 ?

Merci, Merci.
Serge






MichDenis
Le #4221241
à moins que tu aies un ordi "pensant", si tu n'as pas de conditions
particulières pour sélectionner quel code fait exécuter selon
l'index du losange...c'est une problématique sans issue.

Dans le cas inverse, tu peux utiliser un select case
sur la variable "nomduLosange" pour exécuter un bout
de code spécifique....

Tu donnes trop peu d'informations pour bâtir un code qui se tient...!



"garnote"
Salut Denis,

J'avais pensé à ça mais c'est plus compliqué !
Je voudrais que la macro "Déplace" s'exécute en utilisant
i = Application.Caller quand je clique sur un losange
et je voudrais pouvoir appeler "Déplace" en lui passant
certaines valeurs de i qui remplaceraient Application.Caller.
J'arrive à mes fins en appelant une seconde macro "Déplace2".
Est-ce possible de se passer d'une seconde macro?
Avec des arguments optionnels, peut-être?
Mais il n'y a pas péril en la demeure ;-)

Serge






"MichDenis" %
Dim SonNom As String, Sh As Object

****Application.Caller te retourne l'objet que tu as cliquer
SonNom = Application.Caller
**** Substitues l'index de SonNom par l'index du contrôle de ton choix

****Tu obtiens une varriable objet représentant le contrôle de ton choix
Set Sh = Feuil1.Shapes(SonNom).OLEFormat.Object

tu pourras utiliser l'objet pour le reste de ton code

MsgBox TypeName(Sh)
With Sh
'ton code
End With




"garnote"
Bonjour, Bonjour au monde entier,

Sur une feuille de calcul, j'ai 45 losanges nommés
respectivement 1, 2, 3, ... ,44, 45 auxquels sont
associés la même macro qui utilise Application.Caller.
Peut-on demander à une autre macro de cliquer sur
le losange 2 et le losange 5 ?

Merci, Merci.
Serge






Modeste
Le #4221131
Bonsour® garnote avec ferveur ;o))) vous nous disiez :

Je voudrais que la macro "Déplace" s'exécute en utilisant
i = Application.Caller quand je clique sur un losange
et je voudrais pouvoir appeler "Déplace" en lui passant
certaines valeurs de i qui remplaceraient Application.Caller.


Sub deplace()
i = Right(Application.Caller, 1)
Select Case i
Case 1, 4, 7
x = 20: y = 40
Case 2, 5, 8
x = 40: y = -20
Case 3, 6, 9
x = -20: y = 20
End Select
z = 1 + Int(Rnd() * 9)
With ActiveSheet.Shapes("Forme automatique " & z)
.Left = .Left + x
.Top = .Top + y
End With
End Sub
--
--
@+
;o)))

Publicité
Poster une réponse
Anonyme