Retirer des élément d'une listbox en VB ??
Résolu
nico8002
Messages postés
60
Date d'inscription
Statut
Membre
Dernière intervention
-
sky -
sky -
A voir également:
- Retirer des élément d'une listbox en VB ??
- Vb - Télécharger - Langages
- Retirer pub youtube - Accueil - Streaming
- Open element - Télécharger - HTML
- Comment retirer un ami sur facebook - Guide
- Comment retirer une page sur word - Guide
13 réponses
ah mais en faite je veux pas le retirer de ma base , je voudrais juste l'enlever de ma liste .
t'aurai une idée comment faire ?
parce que je commence le vb , jsuis un peu dans le flou :s
t'aurai une idée comment faire ?
parce que je commence le vb , jsuis un peu dans le flou :s
Sur ton bouton retirer, tu peux faire une suppression de l'enregistrement dans ta base avec une requête sql du genre:
"DELETE * FROM TaTable WHERE TaTable.Nom = ""& Me.ListBox.Text &"";"
"DELETE * FROM TaTable WHERE TaTable.Nom = ""& Me.ListBox.Text &"";"
Bonjour,
il faut que tu récupères l'index des éléments à enlever (index i par exemple).
Ensuite, tu peux faire :
il faut que tu récupères l'index des éléments à enlever (index i par exemple).
Ensuite, tu peux faire :
ListBox1.Items.RemoveAt(i)
Je ne suis pas très imaginatif ce matin mais tu pourrais créer un seconde table semblable à la première dans laquelle tu ferais une copie de ta table source. Pour retirer des éléments, tu le supprimerais comme je te l'ai proposé plus haut.
C'est une solution très sale, je te l'accorde et tu dois certainement pour voir trouver mieux.
Tu peux aussi envisager de stocker ceux que tu souhaite garder dans une autre table, au lieu de supprimer ce que tu ne veux plus, mais ce n'est guère mieux.
Quel usage envisage tu de ta liste épurée au juste ?
C'est une solution très sale, je te l'accorde et tu dois certainement pour voir trouver mieux.
Tu peux aussi envisager de stocker ceux que tu souhaite garder dans une autre table, au lieu de supprimer ce que tu ne veux plus, mais ce n'est guère mieux.
Quel usage envisage tu de ta liste épurée au juste ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bha enfaite j'ai une base de données avec une liste de machine
et je vais devoir envoyer un fichier sur certaines machines
donc j'affiche les machines (présent dans ma base) dans une listbox
et je voudrais en retirer dans la listbox pour envoyer mon fichier que a celle que je souhaite envoyer .
et je vais devoir envoyer un fichier sur certaines machines
donc j'affiche les machines (présent dans ma base) dans une listbox
et je voudrais en retirer dans la listbox pour envoyer mon fichier que a celle que je souhaite envoyer .
Chrij , jai fais sa
Dim ItemObject(9) As System.Object
Dim i As Integer
For i = 0 To 9
ItemObject(i) = "Item" & i
Next i
LB_ListeMachines.Items.RemoveAt(i)
mais quand je lance mon application et que je clique sur le bouton sa me surligne en jaune la ligne que j'ai souligné
Dim ItemObject(9) As System.Object
Dim i As Integer
For i = 0 To 9
ItemObject(i) = "Item" & i
Next i
LB_ListeMachines.Items.RemoveAt(i)
mais quand je lance mon application et que je clique sur le bouton sa me surligne en jaune la ligne que j'ai souligné
il te met quoi comme erreur ?
Avec ce que tu viens d'écrire, tu vas enlever l'objet dont l'index est 9 dans ta liste (le dernier i = 9).
D'après ce que tu as écris au début, tu veux retirer ce que tu sélectionnes dans la liste. Si c'est bien ça, tu peux faire :
Avec ce que tu viens d'écrire, tu vas enlever l'objet dont l'index est 9 dans ta liste (le dernier i = 9).
D'après ce que tu as écris au début, tu veux retirer ce que tu sélectionnes dans la liste. Si c'est bien ça, tu peux faire :
For Each item In ListBox1.SelectedItems ListBox1.Items.Remove(item) Next
Dim ObjetDataSet As DataSet
ObjetDataSet.Clear()
For Each item In LB_ListeMachines.SelectedItems
LB_ListeMachines.Items.Remove(item)
Next
j'ai fais sa mais sa souligne en vert ce que j'ai souligné et sa me dit :
"La variable 'ObjetDataSet' est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution."
ObjetDataSet.Clear()
For Each item In LB_ListeMachines.SelectedItems
LB_ListeMachines.Items.Remove(item)
Next
j'ai fais sa mais sa souligne en vert ce que j'ai souligné et sa me dit :
"La variable 'ObjetDataSet' est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution."
Normal pour l'erreur.
Il ne faut pas que tu créer l'objet dataset.
Tu dois avoir quelque part un "Data qq chose" qui est ouvert (c'est ce que disait l'erreur "Impossible de modifier la collection d'éléments lorsque la propriété DataSource est définie" Tu dois le fermer pour modifier les éléments de la Listbox.
Il ne faut pas que tu créer l'objet dataset.
Tu dois avoir quelque part un "Data qq chose" qui est ouvert (c'est ce que disait l'erreur "Impossible de modifier la collection d'éléments lorsque la propriété DataSource est définie" Tu dois le fermer pour modifier les éléments de la Listbox.
en faite sa marche pas ,
Dim DT As New DataTable
DT.Clear()
For Each item In LB_ListeMachines.SelectedItems
LB_ListeMachines.Items.Remove(item)
Next
voila j'ai fait ce que tu ma dis pour mon datasource mais sa me surligne tjrs la meme chose et me dit la meme erreur
Dim DT As New DataTable
DT.Clear()
For Each item In LB_ListeMachines.SelectedItems
LB_ListeMachines.Items.Remove(item)
Next
voila j'ai fait ce que tu ma dis pour mon datasource mais sa me surligne tjrs la meme chose et me dit la meme erreur
Je viens de faire un test rapide qui a l'air de fonctionner :
Normalement ça n'efface que les items sélectionnés
Dim liste As ListBox.SelectedIndexCollection liste = ListBox1.SelectedIndices For Each item In liste ListBox1.Items.RemoveAt(item) Next
Normalement ça n'efface que les items sélectionnés
bha jai un bouton "afficher" pour mettre dans la liste box tout les nom qui sont dans ma base
apres dans ma base chaque machine possede un secteur , yen a 2 dans mon cas
donc jai un check box qui m'affiche les machine d'un des 2 secteur et un autre qui fait la chose inverse .
dc rien qui selectionne mes éléments
apres dans ma base chaque machine possede un secteur , yen a 2 dans mon cas
donc jai un check box qui m'affiche les machine d'un des 2 secteur et un autre qui fait la chose inverse .
dc rien qui selectionne mes éléments
Bonjour,
Apparemment tu est en VB.Net, je ne connaît pas la syntaxe mais en VB6 j'écrirais...
A toi de transcrire en .net
A=
Apparemment tu est en VB.Net, je ne connaît pas la syntaxe mais en VB6 j'écrirais...
For i = ListBox1.Count - 1 To 0 Step -1 If ListBox1.Selected(i) Then ListBox1.RemoveItem (i) i = i - 1 End If Next i
A toi de transcrire en .net
A=
Bon, ce qui est bien c'est que l'on bosse avec la même version de vb.
Ce qui est moins c'est que moi je n'ai pas de souci.
Peux-tu me montrer la fonction qui remplie ta listbox ?
Ce qui est moins c'est que moi je n'ai pas de souci.
Peux-tu me montrer la fonction qui remplie ta listbox ?
Private Sub B_Afficher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Afficher.Click
Dim DT As New DataTable
DT.Clear()
Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\...\BDD.mdb")
Dim oleCmd As New OleDb.OleDbCommand("SELECT NomMachine FROM Machine", oleDbConnex)
Try
Dim TA As New OleDb.OleDbDataAdapter(oleCmd)
TA.Fill(DT)
With LB_ListeMachines
.ValueMember = "NomMachine"
.DisplayMember = "NomMachine"
.DataSource = DT
End With
Catch ex As Exception
MessageBox.Show("Impossible d'établir la connexion à la base !! " & ex.Message)
End Try
For i = 0 To LB_ListeMachines.Items.Count - 1
LB_ListeMachines.SetSelected(i, False)
Next
End Sub
Dim DT As New DataTable
DT.Clear()
Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\...\BDD.mdb")
Dim oleCmd As New OleDb.OleDbCommand("SELECT NomMachine FROM Machine", oleDbConnex)
Try
Dim TA As New OleDb.OleDbDataAdapter(oleCmd)
TA.Fill(DT)
With LB_ListeMachines
.ValueMember = "NomMachine"
.DisplayMember = "NomMachine"
.DataSource = DT
End With
Catch ex As Exception
MessageBox.Show("Impossible d'établir la connexion à la base !! " & ex.Message)
End Try
For i = 0 To LB_ListeMachines.Items.Count - 1
LB_ListeMachines.SetSelected(i, False)
Next
End Sub
J'ai trouvé un lien qui propose une solution pour remplir une listbox à partir d'une base de donnée.
https://codes-sources.commentcamarche.net/
En gros, il faudrait mettre :
J'ai pas de base de donnée sous la main pour tester...
https://codes-sources.commentcamarche.net/
En gros, il faudrait mettre :
TA.Fill(DT) oleDbConnex.Close() for i=0 to DT.Rows.Count -1 LB_ListeMachines.Items.Add(DT.Rows(i)("NomColonne").toString) Next
J'ai pas de base de donnée sous la main pour tester...
Salut,
j'ai regardé un peu depuis hier.
Le souci, c'est que tu lie ta source de donnée à ta liste : tu ne peux donc pas modifier ta liste directement (risque de modifier la bdd) et tu ne peux pas non plus fermer ta connexion (cela vide la liste).
Il faut trouver un moyen de remplir autrement ta listbox pour qu'elle utilise les données sans être lié à la base.
La solution que j'avais mise plus haut est peut être un moyen d'arriver à cela.
j'ai regardé un peu depuis hier.
Le souci, c'est que tu lie ta source de donnée à ta liste : tu ne peux donc pas modifier ta liste directement (risque de modifier la bdd) et tu ne peux pas non plus fermer ta connexion (cela vide la liste).
Il faut trouver un moyen de remplir autrement ta listbox pour qu'elle utilise les données sans être lié à la base.
La solution que j'avais mise plus haut est peut être un moyen d'arriver à cela.
TA.Fill(DT) oleDbConnex.Close() for i=0 to DT.Rows.Count -1 LB_ListeMachines.Items.Add(DT.Rows(i)("NomColonne").toString) Next
Logiquement (mais l'informatique, est-ce une question de logique ?? ;-)), cela récupère les données et les ajoute aux éléments de la listbox (sans la lier)
A toi de me dire si ça change quelque chose.
Voila je met le code pour le prochain qui sera dans la meme galere que moi Lol
Le code de la fonction de remplissage de la listbox
Private Sub CKB_ChoixToutesMachines_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DT.Clear()
Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\..\BDD.mdb")
Dim oleCmd As New OleDb.OleDbCommand("SELECT NomMachine FROM Machine ORDER BY NomMachine", oleDbConnex)
Try
Dim TA As New OleDb.OleDbDataAdapter(oleCmd)
LB_ListeMachines.Items.Clear()
TA.Fill(DT)
oleDbConnex.Close()
For i = 0 To DT.Rows.Count - 1
LB_ListeMachines.Items.Add(DT.Rows(i)("NomMachine").ToString)
Next
Catch ex As Exception
MessageBox.Show("Impossible d'établir la connexion à la base !! " & ex.Message)
End Try
For i = 0 To LB_ListeMachines.Items.Count - 1
LB_ListeMachines.SetSelected(i, False)
Next
End Sub
le code de la fonction pour retirer un element de la listebox
Private Sub B_Retirer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Retirer.Click
DT.Clear()
For i = LB_ListeMachines.Items.Count - 1 To 0 Step -1
If LB_ListeMachines.GetSelected(i) Then
LB_ListeMachines.Items.RemoveAt(i)
i = i - 1
End If
Next i
End Sub
Le code de la fonction de remplissage de la listbox
Private Sub CKB_ChoixToutesMachines_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DT.Clear()
Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\..\BDD.mdb")
Dim oleCmd As New OleDb.OleDbCommand("SELECT NomMachine FROM Machine ORDER BY NomMachine", oleDbConnex)
Try
Dim TA As New OleDb.OleDbDataAdapter(oleCmd)
LB_ListeMachines.Items.Clear()
TA.Fill(DT)
oleDbConnex.Close()
For i = 0 To DT.Rows.Count - 1
LB_ListeMachines.Items.Add(DT.Rows(i)("NomMachine").ToString)
Next
Catch ex As Exception
MessageBox.Show("Impossible d'établir la connexion à la base !! " & ex.Message)
End Try
For i = 0 To LB_ListeMachines.Items.Count - 1
LB_ListeMachines.SetSelected(i, False)
Next
End Sub
le code de la fonction pour retirer un element de la listebox
Private Sub B_Retirer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Retirer.Click
DT.Clear()
For i = LB_ListeMachines.Items.Count - 1 To 0 Step -1
If LB_ListeMachines.GetSelected(i) Then
LB_ListeMachines.Items.RemoveAt(i)
i = i - 1
End If
Next i
End Sub