Microsoft 365 VBA Equivalent d'ActiveControl pour un Label

F22Raptor

XLDnaute Impliqué
Hello,
Si je crée un objet CommandButton, avec un événement CLICK associé. Dans cet évènement, si je fais un MsgBox ActiveControl.Name j'aurai bien le nom de mon bouton.

Mais si c'est un Label, et que je lui associe un événement CLICK également, le ActiveControl ne fonctionne pas (un Label n'étant pas sélectionnable en tant que tel).
Du coup, puis-je récupérer au sein de l'événement le nom du Label ?

Merci !
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne vous suis pas. Si vous avez pu lui faire exécuter une procédure associée à son évènement Click vous savez forcément de quel Label il s'agit, puisque c'est celui dont le nom est mentionné avant "_" dans le nom de la procédure, non ? Quelle curieuse idée de prendre ActiveControl.Name même quand c'est un CommandButton !
 

F22Raptor

XLDnaute Impliqué
Je suis obligé de me dévoiler ! ;)

Je vais avoir 36 Labels qui auront comme nom Label1 à Label36.
Chacun aura son évènement Click.
Et dans l'évènement click, je veux récupérer la référence du Label, la multiplier par 10, ce qui me donnera un angle/cap sur une rose des vents.

Et dans l'idéal, chacun de mes 36 événements aurait un code du genre

Sub Label1_Click()

CodeDesLabels

End Sub


avec

Sub CodeDesLabels()

'récup de la référence de label dans une variable

CapChoisi = RefLabel * 10

'traitements divers avec le CapChoisi

End Sub


Donc le même code s'applique pour chacun des 36 événements. Pas d'adaptation dans chacun des événements.
 

Dranreb

XLDnaute Barbatruc
Ben alors c'est hyper simple: dans chaque Sub LabelX_Click spécifiez derrière CodeDesLabel une valeur spécifique au Label, votre procédure étant équipée d'un argument pour la recueillir : Sub CodeDesLabel(ByVal V As Double)

Mais pour 36 Label, je me demande si ça ne vaudrait pas le coup de faire autre chose. Je pensais d'abord à un module de classe mais… l'utilisateur ne cliquerait-il pas déjà sur une image de rose des vents ?

En attendant, si c'est pour un cap, je suis étonné que votre nombre de Label ne soit pas multiple de 8.
 
Dernière édition:

F22Raptor

XLDnaute Impliqué
J'ai mis mon fichier en exemple : on clique sur le bouton pour lancer le UF.
On a une rose des caps : Chaque petit carré représente 10°, de 10 en 10, jusqu'au cap 360° tout en haut.
Je n'ai mis de code événement Click que pour les labels 1 à 4 pour l'instant.

Donc, pour spécifier un cap, on clique sur un petit carré, et le cap s'affiche au milieu (et le carré en rouge).
On peut aussi renseigner un cap dans la boîte centrale, et le carré concerné s'affiche.
J'ai juste un souci pour l'instant : je voudrais afficher le format avec le ° des degrés.
C'est OK par le clic sur les petits labels carrés, mais ça ne marche pas en sélection manuelle.

Pour revenir sur la simplification des macros de Labels, effectivement, je peux mettre un paramètre que j'envoie à CodeDesLabels, mais si ça avait été possible de standardiser au point de ne même plus avoir cette différence, ça aurait été encore mieux !
En fait ce serait possible avec des CommandButtons plutôt que des labels (dans ce cas, j'utiliserais ActiveControl), mais le changement de couleur sur un CommandButton se voit moins (l'aspect 3D casse la lisibilité : je passe les Labels en fmSpecialEffectFlat, mais ce n'est pas possible sur un bouton)

PS : pourquoi un multiple de 8 sur des caps ? J'aurais dans ce cas 45 carrés, et ce n'est pas divisible par 4 ou 2, je n'aurais donc pas le carré du "180°" plein sud ?
 

Pièces jointes

  • cercle.xlsm
    31.3 KB · Affichages: 22

Dranreb

XLDnaute Barbatruc
Ça confirme ce que je pensais. Je vais vous dessiner une rose des vents, si c'est bien l'image en rapport avec le vrai sujet, et on va détecter la position dans l'image où on enfoncera (ou relâchera) le bouton de la souris, ce sera bien plus simple !
 

Dranreb

XLDnaute Barbatruc
Regardes cette ressource. J'y fais définir plein de choses dans des images. L'image dans laquelle on pourrait choisir votre direction s'apparenterait plus à celle permettant de choisir A (l'angle de teinte), mais le système de récupération de l'information serait bien plus proche de ce qui est employé pour F (la force).
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Elle vous plairait ma rose des vents ?
1033120

Remarquez, je pourrais y apporter des changements …
 

Dranreb

XLDnaute Barbatruc
Sérieux, je peux changer à volonté la couleur de fond de l'image et celle des 'pétales' ainsi que la largeur de ces dernières.
.
1033127

Dites moi ce qui vous arrangerait, et si vous souhaiteriez un coup de main sur la programmation.
 

F22Raptor

XLDnaute Impliqué
Sérieux, je peux changer à volonté la couleur de fond de l'image et celle des 'pétales' ainsi que la largeur de ces dernières.
.Regarde la pièce jointe 1033127
Dites moi ce qui vous arrangerait, et si vous souhaiteriez un coup de main sur la programmation.
Je ne voudrais pas être lourdingue en réclamant des choses ;)

Mais voici une idée (peut-être irréalisable) que j'aurais en tête :

Une rose des caps de ce style, avec des cercles concentriques.
Quand on balade la souris sur le dessin, s'afficherait un point, et dans deux boîtes, le cap, et la force du vent (qui changeraient en temps réel avec le déplacement de la souris) :
le cap, c'est bien entendu l'angle de 0 à 360°, et la force du vent, serait la distance au centre (dans mon exemple, un maximum de 55 kt)

Ici mon curseur violet indiquerait un vent du 218° pour 15 kt.
Quand on est OK avec la position (et donc les valeurs affichées dans les boîtes dynamiques), on clique pour figer !
Un reclic libérerait à nouveau le curseur pour modifier la position.

rose_caps.PNG
 

Dranreb

XLDnaute Barbatruc
Oui, c'est tout à fait possible. Il faudrait juste arrondir un tout petit peu les valeurs calculées à partir du X et Y des procédures MouseMove et MouseUp. Pourquoi les valeurs sont-elles en ordre décroissant à partir du centre ?

Je trouve que le cap est plus difficile à visualiser avec des branches de longueurs différentes.
1033147
1033148
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Voilà ce qu'il est possible de faire.

Édition: Remarque: je viens de voir sur internet que la direction angulaire du vent est généralement donnée par rapport au nord, et en tournant dans le sens horaire, et non selon la règle trigonométrique. Je vais corriger ça.
 

Pièces jointes

  • RoseVentsF22Raptor.xlsm
    70.8 KB · Affichages: 15
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll