Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro clic sur losanges nommés

4 réponses
Avatar
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

4 réponses

Avatar
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" a écrit dans le message de news:

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
Avatar
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" a écrit dans le message de news: %
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" a écrit dans le message de news:

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






Avatar
MichDenis
à 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" a écrit dans le message de news:

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" a écrit dans le message de news:
%
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" a écrit dans le message de news:

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






Avatar
Modeste
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)))