Pb bouton

Résolu
niny -  
 niny -
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
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. amigo
     
    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
    1. niny
       
      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
      1. niny > niny
         
        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
      2. niny > niny
         
        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
  2. amigo
     
    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