Pb VBA : bouton dynamique et treeview

Résolu
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 11 mars 2008 à 15:37
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 13 mars 2008 à 17:18
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

audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 17:18
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 !
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
11 mars 2008 à 20:55
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+
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
12 mars 2008 à 15:13
 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
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 14:34
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
13 mars 2008 à 15:56
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+
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 16:07
il n'y a pas de soucis , merci beaucoup et bon courage à vous !
0
Rejoignez-nous