Pb bouton

Résolu/Fermé
niny - 13 mars 2008 à 16:16
 niny - 13 mars 2008 à 17:07
Bonjour,

voila, je suis dans un envirronement VBA sous excel

je créé des boutons dynamiquement, ces boutons sont censé ouvrir un userform sur lequel chaque bouton récupére une donnée. ceci fonctionnait jusqu'à ce que :

j'ai ajouté un moyen pour que les boutons ne se mettent pas les uns sur les autres lors de la génaration de ceux ci : boucle de création avec la déportation nécessaire.

maintenant avec cette modif : seul le dernier bouton générer agit correctement et les autres je ne peux plus cliquer dessus .

une idée ? voici mon code car je ne vois aps d'où viens le problème et c'est une horreur lol, un peu d'aide ne serait aps de refus :


Dim k As Integer
Dim deport As Integer
Dim inter As Integer
Dim i As Integer
deportinit = 5
inter = 5

k = 3
i = 3

For i = 3 To 7

While k <> 7
k = k + 1
deport = deport + 20 * deportinit
Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & k, True)

With Bouton
'.Caption = k 'AutoBe.nom_bouton
.Left = deportinit + deport
.Top = 12

End With
i = i + 1

Wend
Next


merci pour votre aide

2 réponses

Bonjour,

J'ai testé ta macro, elle ajoute bien 4 boutons sur la feuille, ils réagissent quand on clic dessus, mais ils ne se passe rien vu qu'ils ne sont ratachés à aucune macro.

C'est normal , ou est le problème?

A+
0
merci pour ta réponse

en fait ces bouton sont d'un type qui vient d'un module de classe :

Option Explicit
Private WithEvents mBouton As CommandButton
Private mParent As Classe2 'Contient le nom du parent
Private midbouton As Integer

Sub init(Bouton As CommandButton, Parent As Classe2, idbouton As Integer)
Set mBouton = Bouton
midbouton = idbouton
Set mParent = Parent

End Sub

Private Sub mBouton_click()
choix_install2.bouton_cliqué.Caption = midbouton
choix_install2.Show

With mBouton
.Caption = AutoBe.nom_bouton.Caption
'.AutoSize = True
End With

End Sub

et du coup je pensais que le fait de mettre les boutons comme ca ils garderaient leur fonctionnalités

en fait ce qui me tue dans ce que tu me dis et qui est vrai, c'est que je vois pas pourquoi le dernier bouton généré m'ouvre le userform souhaité alors que je ne lui ai aps indiqué .

j'ai du mal à comprendre vois tu d'où pourrais venir le pb ?
0
niny > niny
13 mars 2008 à 16:52
en fait j'ai dit une bétise je lui ai dit d'ouvrir l'interface car c'est dans mon module de classe qui créer le bouton mais du coup je vois pas pourquoi seul le dernier bouton générer fait ce que je veux et aps les autres alors qu'ils sont générés du même module
0
niny > niny
13 mars 2008 à 17:07
j'ai trouvé : alors j'explique mon cas pour els personnes qui pourraient en avoir besoin .

mes bouton sont déclaré de type de mon module de classe.
dans ce module il y a une collection sur lesquels je dois ajouter les boutons .
le fait que mon dernier bouton généré soit le seul qui puisse agir était tout à fait normal car je n'avais aps inclus dans la boucle le fait que : collection.add "bouton". ceci était à l'extérieur de la boucle .

forcement le dernier élément créé devient le seul à avoir els caractérisqtiques souhaitées !

voili voilou ,

merci beaucoup car avec ta question tu m'as fait trouver mon problème

@+
0
Je pense que l'objet Bouton se refere au dernier element inseré. Sa valeur est ecrasée à chaque tour de boucle et ne garde sa valeur que pour k=5

ensuite du ecritSub init(Bouton As CommandButton, Parent As Classe2, idbouton As Integer)
Set mBouton = Bouton
midbouton = idbouton
Set mParent = Parent

mBouton pointe sur l'objet Bouton

et donc

Private Sub mBouton_click()
choix_install2.bouton_cliqué.Caption = midbouton
choix_install2.Show

affiche la feuille choix_install2

A+.
0