Evènement mousemove sur une sélection de contrôles de même type

Soyez le premier à donner votre avis sur cette source.

Vue 7 527 fois - Téléchargée 712 fois

Description

Pour présenter cette source, lorsque vous avez 30 Labels(ou autres) dans une Form, et que vous voulez qu'a chaque évènement MouseMove de ces Labels ça exécute une meme procédure, il faut écrire 30 fois Call TelleProcédure (dans Label1_MouseMove, ..., Label30_MouseMove)
Avec ces 2 Modules (dont un de Classe) de quelques lignes, vous faites la meme action sur une série de controles (pour effectuer une action identique sur plus de 50 controles sur 100, par exemple, ca peut être interressant)
(Voir notes pour plus d'explication & commentaires dans sources, pour modification)

Conclusion :


J'avais déjà modifié un Module de Classe mais là c'est mon premier que je créer entièrement donc je suis tout péteux !!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
Salut Gamanga,

J'utilise pas de shape, mais des Labels, de plus ceux-ci ne se trouvent sur la feuille du classeur, mais dans un UserForm.
Messages postés
3
Date d'inscription
vendredi 7 avril 2006
Statut
Membre
Dernière intervention
18 mars 2009

voici une macro VBA qui à titre d'exemple renomme des formes sous excel en faisant appel à la notion de collection.

Cette tecnique est AUSSI utile sous VB qui ne gére des groupes de contrôle à une dimension ce qui peut s'avérer insuffisant. En conbinant l'index du groupe et une régle sur le nom du contrôle on peut gérer des tableaux de contrôles de plus d'une dimension.

Les noms des variables utilisés par la macro servent de commentaires.

Sub Macro1()
' la feuille active comporte un certain nombre d'ellipse (0 est possible) : on peut les renommer à la main dans excel après copier coller
' voici un exemple avec une macro VBA

' Macro1 Macro
' Macro enregistrée le 23/04/2006
'
Dim Forme As Shape
Dim numéro As Integer
Dim OldName As String, NewName As String
'
For Each Forme In ActiveSheet.Shapes
OldName = Forme.Name
If Mid$(UCase$(OldName), 1, 4) = "OVAL" Then
numéro = Val(Trim$(Mid$(OldName, 5)))
NewName = "Ellipse" + Format$(numéro, "0000")
Forme.Name = NewName
MsgBox "Ancien nom " + OldName, vbInformation, "Nouveau nom " + Forme.Name
End If
Next
Range("a1").Select
End Sub
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
Malheureusement non, j'ai des notions mais c'est tout.
Par contre c'est bon a savoir, car j'aurai fait la même chose en Vb6 si j'en avais eu l'utilité, maintenant avec votre coup de main je connais une technique simplifié.

Merci pour vos commentaires, qui m'a permis de comprendre le groupe de contrôles !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
pas de groupes de controles en VBA...

nous pensions que tu jouais en VB6
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
J'ai vérifié, y a pas de propriété Index en VBA (juste TabIndex, ms inutile dans ce cas)
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.