Pb VBA : bouton dynamique et treeview [Résolu]

Signaler
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008
-
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008
-
bonjour,

mon envirronnement est excel VBA (2003)

je cherche à savoir comment déclarer un bouton de facon dynamique, car pour l'instant j'ai qu'un bouton qui fait appel à une fonction mais par la suite je risque d'en avoir plusieurs qui récupere la même chose mais sur eux. par exemple quand je clique sur un choix du treeview, le nom du choix + id est envoyé au bouton. par la suite les autres boutons feront la même chose mais recevront une info différente comment faire ? j'ai trouvé des codes différents sur le net mais rien ne m'a éclairci.

de plus je ne sais aps comment faire pour que sur mon treeview je puisse cocher seulement un choix et non pas plusieurs est ce possible ?

merci pour votre aide car depuis hier je suis là dessus et je n'avance pas c'est horrible !!!

6 réponses

Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

c'est bon j'ai trouvé d'où vient mon problème : c'est vriament idiot et c'est le genre de truc qui fait perdre son temps alors pour ceux qui auront le même problèeme que moi : il suffisait de mettre la ligne  : Auto.Add Bouton, k   dans la boucle.
 voici le nouveau code avec le décalage qu'il faut et 4 boutons qui ont les même caractéristiques :

Set Auto = New Classe2 'collection de bouton AutoBe
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
         .Left = deportinit + deport
         .Top = 12
        
          End With
          i = i + 1
          Auto.Add Bouton, k     //la fameuse ligne pour que tous les boutons possèdent                            les                                                       mêmes caractéristiques
         
     Wend
  Next

 
merci à toi bigfish !!!


@+ et encore bon courage !
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

c'est d'autant plus horrible que tu n'es pas dans le bon theme !... ben si !...
Tu aurais du poster ici : [infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA] /

Ceci etant dit, je dois dire que ton explication n'est pas tres claire.

je commence par la partie la plus simple c'est a dire ta derniere question :

oui : ListView1.MultiSelect = False

pour la suite j'attend tes precisions. Un bout de code serait le bienvenu.

A+
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

 dsl de ne pas avoir poster cette question au bon endroit à vrai dire je savais aps où la mettre !  et merci de répondre à mon problème

pour mes boutons dynamiques j'ai trouvé. j'arrive à en créer à partir d'un bouton et en faisant appel à des modules de classe qui me permet de créer des boutons correspondant au type objet prédéfinis.
 mon pb est que je ne sais pas comment faire pour que mes boutons dynamiques créés dans une boucle ne se positionne pas au même endroit j'ai essayer un truc comme ca mais il manque quelque chose.

Set Auto = New Classe2      'collection de bouton AutoBe


Dim k As Integer
Dim deport As Integer
Dim inter As Integer
deport = 12
inter = 12
k = 3
  
  While k <> 4
    k = k + 1
    Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & k, True)
    With Bouton
        .Caption = AutoBe.nom_bouton
        .Left = (inter * (k - 1)) + deport
        .Top = 12


   End With
   Wend


Auto.Add Bouton, k

si tu vois mon problème je serais ravie !!! lol

 pour le treeview ca marche pas, j'avais regardé toutes les propriétés même
 singlsel = true et rien ne marche.
"ListView1.MultiSelect = False " non plus

merci pour ton aide
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

j'ai trouvé !
j'ai fait des modif pour que les boutons n'aillent pas au même endroit :

Dim k As Integer
Dim deport As Integer
Dim inter As Integer
deport = 5
inter = 5
k = 3
 
  If k <> 5 Then
      k = k + 1
    deport = deport + 4 * deport
    Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & k, True)
    With Bouton
        .Left = (inter * (k - 1)) + deport
        .Top = 12
   End With
  End If

mais now j'ai un autre pb du coup! car en se décallant, les boutons ne prennent pas tous les fonctionnalités que je leur avait attribué. c'est à dire qu'ils sont censé ouvrir un userform (treeview) sur lequel je fais un choix. le nom de ce choix va sur le bouton cliqué. hors en faisant mon décallage ben now je peux cliquer que sur le dernier bouton cliqué.

vois tu d'où peut venir mon pb ?
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

désolé je n'ais  pas beaucoup de temps a consacrer a ce forum en ce moment. Pas mal de boulot et un 8ieme business trips (depuis fevrier 2007) en Chine en preparation. Des que j'ai un moment je me penche sur vos probleme

Encore désolé.

A+
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

il n'y a pas de soucis , merci beaucoup et bon courage à vous !