0
Merci

Quelques mots de remerciements seront grandement appréciés.

[VBA] Ajouter des contrôles dynamiquement dans un Userform


Pour créer le support de cette démo j'ai employé mon exemple de la calculatrice mais en créant tous les contrôles de façon dynamique.

Lorsque vous créez des contrôles de façon dynamique sur un UF, Excel ne reconnaît pas les noms des contrôles. Ce qui revient à dire que les événements générés par vos contrôles ainsi que leurs propriétés
ne seront pas accessibles avec les noms que vous leur attribuez. Par exemple, vous créez un bouton avec le code suivant :
Set Bouton = Me.Controls.Add("Forms.CommandButton.1", "Bt" & i, True)
Le nom du bouton sera (en supposant que i = 1 ) BT1
Mais l'événement Private Sub BT1_Click() ne sera jamais généré. Excel ne connaîtra que Bouton. Pour y remédier il faut employer des collections d'objets pour les propriétés et des collections de classe pour les événements. Les collections d'objets contiennent non seulement le contrôle mais également une clé qui permet de le référencer. En initialisant la propriété Tag des contrôles avec l'index souhaiter la collection de classe pourra renvoyer un index ce qui permet aussi de savoir quel contrôle à été le sujet de cet événement.

Il n'existe aucun contrôle dans le design de l'UserForm. Tous les contrôles de la calculatrice sont créés dynamiquement, y compris les Frames Container. La démo donne aussi le moyen d' incorporer les boutons dans les frames


Il faut déjà avoir une certaine maîtrise du VBA pour comprendre le mécanisme de ces collections,
mais si vous avez un problème de compréhension ou un bug à signaler vous pouvez me joindre par MP.

Téléchargement :
Serveur 1 : Ajouter Control UserForm.xls
0
Merci

Quelques mots de remerciements seront grandement appréciés.

Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche
et directeur délégué au développement numérique du groupe Figaro.

A voir également

Publié par . Dernière mise à jour le par Jean-François Pillou.

Ce document intitulé «  [VBA] Ajouter des contrôles dynamiquement dans un Userform  » issu de CommentCaMarche (https://www.commentcamarche.net/) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

0 Commentaire