bouton et evenement dynamique

  • Initiateur de la discussion jordan
  • Date de début
J

jordan

Guest
Bonjour,

Sous excel 97, j'essaie de créer dynamiquement des boutons
sur une feuille et de leur affecter un événement click
similaire pour tous (je suis dans la phase où je teste
qu'avec un seul bouton créé dynamiquement)
Pour cela je suis passé par un module de classe nommé classe1

dont voici le code

'--------------------------------------------
Public WithEvents boutonUp As CommandButton

Private Sub boutonUp_Click()
MsgBox 'bouton clique'

End Sub
'--------------------------------------------

et dans un module standard

'--------------------------------------------
Dim bt As classe1

Sub bt_Add_Click()

set bouton =
Sheets('database').OLEObjects.Add(ClassType:='Forms.CommandButton.1',
Width:=80, Height:=20)

set bt = New classe1
set bt.boutonUp =
Sheets('database').OLEObjects('CommandButton1').Object

End Sub
'--------------------------------------------

La macro bt_Add_Click est affectée à un bouton.
En cliquant sur ce bouton, un bouton est crée dynamiquement.
Il n'y a aucune erreur de compilation, d'exécution.
Le seul soucis est que le bouton créé ne réagit pas à
l'événement click

Comment faire pour que cela fonctionne

Merci

Jordan
 

Laurent L

XLDnaute Nouveau
Bonjour,

Quand tu crées un CommandButton dans ta feuille, ça provoque un arrêt de VBA et une réinitialisation du projet, car tu modifies le module de ta feuille database (un nouvel objet CommandButton y est créé 'en dur'). En fait, si tu exécutes ta procédure bt_Add_Click en pas à pas, tu verras que l'exécution s'arrête immédiatement après Sheets('database').OLEObjects.Add(...) et que ta variable bt ne sera jamais initialisée.

Une solution : mets ta procédure de création du nouveau bouton, ainsi que le module Classe1, dans un classeur différent, le mieux serait une macro complémentaire par exemple. Comme le code sera dans un projet extérieur à ton classeur, il ne sera pas réinitialisé. En revanche, le projet du classeur contenant les CommandButtons, lui, sera réinitialisé et il faudra faire attention à tous les effets que ça peut avoir (variable globales vidées, etc.)

Cordialement,

Laurent
 

Discussions similaires

Statistiques des forums

Discussions
314 162
Messages
2 106 601
Membres
109 637
dernier inscrit
lafforest