Enlever item combobox

fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 22 mars 2007 à 15:05
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 23 mars 2007 à 11:17
bonjour,

voila j'ai un treeview avec des cases a cocher. Quand l'utilisateur coche une case alors la case cochée s'ajoute dans une combobox.
Pour ca je fais :
Private Sub arborescence1_NodeCheck(ByVal Node As MSComctlLib.Node)
 If Node.Checked Then
If Node.Text = "auto rééducation" Then
   ComboBox1.AddItem "auto rééducation"
end if
If Node.Text = "hanche" Then
   ComboBox1.AddItem "auto rééducation"


end if
......
end if
end sub.
Ca ca marche bien mais ensuite j'aimerai que si on decoche alors l'item s'enlève.
j'ai ajouté juste avant mon end sub précédent :
 If Not Node.Checked Then
         If Node.Text = "adducteurs" Then
       ComboBox1.RemoveItem "adducteurs"
       End If
end if
maisca ne marche pas ca me dit "argument non valide".
Je pense qu'il faudrait que j'indexe mes item mais j'ai beau essayer je ne vois pas et je ne trouve pas sur le site comment faire.
Quelqu'un aurait il une suggestion s'il vous plait?
Merci!




 


 

14 réponses

fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
22 mars 2007 à 15:07
ah oui je precise que je travaille avec vba sous word
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 mars 2007 à 15:23
Tu ne peux détruire un article d'une ComboBox qu'en te référant son indice.

Si tu veux te référer à son contenu, il te faudra commencer par une boucle sur les articles de ta combo jusqu'à trouver l'indice de l'article contenant ce "contenu", puis effacer l'article ayant cet indice-là ...!
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
22 mars 2007 à 15:33
ok merci mais comment je fais pour donner des indices. J'ai pensé a :
Private Sub arborescence1_NodeCheck(ByVal Node As MSComctlLib.Node)
 If Node.Checked Then
If Node.Text = "auto rééducation" Then
   ComboBox1.AddItem "auto rééducation",1
end if
If Node.Text = "hanche" Then
   ComboBox1.AddItem "hanche",2
....
If Not Node.Checked Then
         If Node.Text = "adducteurs" Then
       ComboBox1.RemoveItem (1)
       End If
end if
mais apparement c pas comme ca qu'on indexe mais items....
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 mars 2007 à 15:33
une boucle, jmfmarques ?

quee devient le petit  Sendmessage CB_FINDSTRINGEXACT ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

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

Posez votre question
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
22 mars 2007 à 16:13
voila ce que j'ai fait :
If Node.Checked Then
          If Node.Text = "auto rééducation" Then
            ComboBox1.AddItem "auto rééducation", num5       
End If
        If Node.Text = "hanche" Then
       ComboBox1.AddItem "hanche", num4
..........
end if
If Not Node.Checked Then
           If Node.Text = "auto rééducation" Then
       ComboBox1.RemoveItem (num5)
       End If
       If Node.Text = "hanche" Then
       ComboBox1.RemoveItem (num4)
       End If
.....
Mais ca ne marche pas parce qu'en fait ca m'enleve toujours le dernier item coché dans mon treeview et non l'item décoché..
A quoi servent les index alors...?
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
22 mars 2007 à 16:59
j'ai essayé de faire comme tu la dis jmfmarques. Voila ce que j'ai fait :

Private Sub arborescence1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim var As String

 If Node.Checked Then
          If Node.Text = "auto rééducation" Then
            ComboBox1.AddItem "auto rééducation"      
End If
        If Node.Text = "hanche" Then
             ComboBox1.AddItem "hanche"      
  End If
...
If Not Node.Checked Then
       For i = 1 To arborescence1.Nodes.Count
       var = Node.Text
       For j = 1 To ComboBox1.ListCount
              If ComboBox1.Value = var Then
              indice = ComboBox1.ListIndex
              End If
              Next
          Next
          ComboBox1.RemoveItem (indice)
    End If

mais ca ne marche pas...je ne comprend plus trop la...
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
22 mars 2007 à 17:15
si vous souhaitez me répondre vous pouvez mais je ne vous répondrez que demain. La il faut que j'y aille.
Merci d'avance
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 mars 2007 à 17:31
Fais un petit projet avec une Combo Combo1 et un bouton Command1


et ce code :


 


Private Sub Form_Activate()
   For i = 0 To 5
      Combo1.AddItem i & "a"
  Next


End Sub


Private Sub Command1_Click()
   Var = "3a"   ' ce que tu veux enlever
   For i = 0 To Combo1.ListCount - 1
      If Combo1.List(i) = Var Then
         Combo1.RemoveItem (i)
         Exit Sub
      End If
   Next
End Sub
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mars 2007 à 09:49
merci de ton aide, je suis en train d'y réflechir dessus là grace à ce que tu m'as donné.
Merci encore.je vous tiens au jus
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mars 2007 à 10:11
je comprend pas. J'ai fais comme tu ma dis. J'ai fais le petit projet et j'y est mis une textbox pour saisir ce qu'on veut enlever. Ca marche et ca donne :


Private Sub UserForm_Activate()
   For i = 0 To arborescence1.nodes.count
   ComboBox1.AddItem i & Node.text
    TextBox1.Text = Node.Text
  Next
End Sub


Private Sub Commandbutton1_Click()
Dim var As String


   var = Node.text  ' ce que tu veux enlever
   For i = 0 To ComboBox1.ListCount - 1
      If ComboBox1.List(i) = var Then
         ComboBox1.RemoveItem (i)
        Exit Sub
      End If
   Next
End Sub
donc ca ca marche très bien. Je l'ai donc adapté pour mon treeview a cocher. Je veux ken je coche ke ca ajoute a treeview et kan je decoche ca l'enleve :
Private Sub arborescence1_NodeCheck(ByVal Node As MSComctlLib.Node)Dim Dim image As String
Dim var As String


   If Node.Checked Then
 ComboBox1.AddItem i & Node.Text
        end if

 If Not Node.Checked Then
 var = Node.Text
      
    For i = 1 To ComboBox1.ListCount - 1
        If var = Node.Text
      
    For i = 1 To ComboBox1.ListCount - 1
        If ComboBox1.ListIndex(i) = var Then
        ComboBox1.RemoveItem (i)
        End If
    Next
    End If var = Node.Text
      
    For i = 1 To ComboBox1.ListCount - 1
        If ComboBox1.ListIndex(i) = var Then
        ComboBox1.RemoveItem (i)
        End If
    Next
    End If
end sub
mais ca me met un message d'erreur au niveau de ComboBox1.ListIndex(i) = var a me dis incompatibilité de types. Alors que ca marchait avant...Je n'y comprend plus rien!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 mars 2007 à 10:20
Pourquoi 3 boucles For ? et 2 Removeitem ?

MPi
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mars 2007 à 10:36
rah mauvais copier coller. Je remet ce que j'ai fait :
Private Sub arborescence1_NodeCheck(ByVal Node As MSComctlLib.Node)Dim var As String


   If Node.Checked Then
       ComboBox1.AddItem Node.Text
      end if
If Not Node.Checked Then
 var = Node.Text
If ComboBox1.List(i) = var Then
        ComboBox1.RemoveItem (i)
        End If
    Next
    End If
end sub
J'ai toujours un souci au niveau de combobox1.list(i) alors que ca marchait quand j'ai fait un petit projet ou j'y est mis une textbox pour saisir ce qu'on veut enlever. Ca marche et ca donne :


Private Sub UserForm_Activate()
   For i = 0 To arborescence1.nodes.count
   ComboBox1.AddItem i & Node.text
    TextBox1.Text = Node.Text
  Next
End Sub


Private Sub Commandbutton1_Click()
Dim var As String


   var = Node.text  ' ce que tu veux enlever
   For i = 0 To ComboBox1.ListCount - 1
      If ComboBox1.List(i) = var Then
         ComboBox1.RemoveItem (i)
        Exit Sub
      End If
   Next
End Sub
et la j'ai pas de souci a combobox1.list(i).
Je ne vois pas ce qui change pour qu'il veuille pas....
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mars 2007 à 10:39
ah mais c'est pas vrai ! j'ai mis une boucle for avant mon if combobox.list (i). J'ai mis
For i = 1 To ComboBox1.ListCount - 1 voila...
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mars 2007 à 11:17
bon je comprend rien. Combobox.list(i) il veut pas alors qu'il a voulut avec le petit projet que j'ai fait avant... Peut etre qu'il y a un truc avec le treeview en tout cas je ne vois pas l'erreur....
0
Rejoignez-nous