Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pas moyen d'effacer un élément dans un fichier texte qui est la source d'un comboBox

14 réponses
Avatar
Guy FALESSE
Bonjour à tous,
Donc, j'ai un comboBox base sur le fichier texte c:\catégories.txt
J'ai un bouton qui contient le code ci-dessous, lorsque je mets le spoints
d'arrêt, tout semble fonctionner, mais rien ne se passe.
Lorsque je supprime un élément de la liste, il s'efface, en principe,
suivant le code, comme la liste est clear, le fait de ré-écrire tous les
éléments de cette liste dans le fichier texte devrait l'avoir supprimé
puisque on l'a suuprimé du combo et qu'on a fait combo1.clear.
Hé bien non, tout reste en l'état, alors que devrais-je faire?
Bien sûr, il suffit de d'employer Notepad et on supprime à la main :-)

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:\Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub

D'avance merci,

Guy FALESSE

10 réponses

1 2
Avatar
ng
Salut

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub




Il n'y a aucun code de réecriture dans le fichier ici... Ca va pas se faire
tout seul. Combo1.Clear permet, comme son nom l'indique, d'effacer le
contenu de la combo. C'est tout.

Il faut ecrire un code qui boucle la combo et qui réecrit dans un fichier
texte :

dim k as integer, i as interger
k=freefile
Open "c:....txt" for output as #k
For i = 0 to Combo1.ListCount
Print #k, Combo1.List(i)
Next
Close #k

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Avatar
LE TROLL
Salut Guy :o)

If combo1.listindex > -1 Then: Combo1.Clear
dim p1 as long
Open "c:Catégories.txt" For Input As p1
Do While Not EOF(p1)
Input #p1, info$
Combo1.AddItem info$
Loop
Close p1

---> LA, je ne sais pas trop ce que tu veux faire, en tout
cas, ce que tu as fait est étrange???
-1- Tu supprimes sur test un élément de list, puis tu
effaces la liste??? (comme sus-cité)...
-2- Puis tu recharges la liste avec un fichier...
-3- Si tu veux juste vider ta liste:
combo1.clear
-4- Au lieu de ça:
If combo1.listindex > -1 Then: Combo1.Clear
Ne voulais tu pas plutôt faire ça:
If combo1.listcount < 1 Then: Combo1.Clear
Soit si liste vide, mais si elle est vide, ce n'est pas la
peine de la vider...
Le ListIndex < 0, c'est une liste vide, ou un click au
mauvais endroit parfois...

QUESTIONS:
- Est-ce une liste vide que tu veux recharger avec le
fichier?
- Ou, enlever sur test, simplement un élément de la liste,
conserver le reste de la liste, et le compléter par ce qu'il
y a dans le fichier???
--------------------

"Guy FALESSE" a écrit dans le
message de news: OQ$
Bonjour à tous,
Donc, j'ai un comboBox base sur le fichier texte
c:catégories.txt
J'ai un bouton qui contient le code ci-dessous, lorsque je
mets le spoints d'arrêt, tout semble fonctionner, mais
rien ne se passe.
Lorsque je supprime un élément de la liste, il s'efface,
en principe, suivant le code, comme la liste est clear, le
fait de ré-écrire tous les éléments de cette liste dans le
fichier texte devrait l'avoir supprimé puisque on l'a
suuprimé du combo et qu'on a fait combo1.clear.
Hé bien non, tout reste en l'état, alors que devrais-je
faire?
Bien sûr, il suffit de d'employer Notepad et on supprime à
la main :-)

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher
le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub

D'avance merci,

Guy FALESSE



Avatar
Driss HANIB
je me permets de compiler le correction de ng

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub





"ng" a écrit dans le message de
news:
Salut



Private Sub cmdSupprimer_Click()

Dim vValeurIndex
Dim info$
Dim i as integer, k as integer

vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
' Combo1.Clear ' ne sert à rien

' ici met comme l'a écrit ng la réécriture du fichier pour mettre à jour
ta suppression
k=freefile
Open "c:....txt" for output as #k
For i = 0 to Combo1.ListCount
Print #k, Combo1.List(i)
Next
Close #k

Else
Beep
End If
End Sub


Il n'y a aucun code de réecriture dans le fichier ici... Ca va pas se


faire
tout seul. Combo1.Clear permet, comme son nom l'indique, d'effacer le
contenu de la combo. C'est tout.

Il faut ecrire un code qui boucle la combo et qui réecrit dans un fichier
texte :

dim k as integer, i as interger
k=freefile
Open "c:....txt" for output as #k
For i = 0 to Combo1.ListCount
Print #k, Combo1.List(i)
Next
Close #k

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


Avatar
Guy FALESSE
Salut Nicolas,
Merci de ta réponse.
Comme ça, plus de problème, toute la liste est effacée et dans le combo et
dans le fichier texte.
Ce que j'aurais souhaité était seulement d'effacer l'item sélectionné.

@+

Guy FALESSE



"ng" a écrit dans le message de news:

Salut

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub




Il n'y a aucun code de réecriture dans le fichier ici... Ca va pas se
faire
tout seul. Combo1.Clear permet, comme son nom l'indique, d'effacer le
contenu de la combo. C'est tout.

Il faut ecrire un code qui boucle la combo et qui réecrit dans un fichier
texte :

dim k as integer, i as interger
k=freefile
Open "c:....txt" for output as #k
For i = 0 to Combo1.ListCount
Print #k, Combo1.List(i)
Next
Close #k

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


Avatar
Guy FALESSE
Salut Le Troll,
Ben, comme tu vois, j'ai tout mélangé, c'est comme ça, quant on veut
apprendre en copiant.
Ce que j'aurais voulu faire, c'est d'enlever un élément, par exemple,
j'avais : essai, testUn, testDeux etc.
Je voulais effacer essai et du combo et du fichier texte (Catégories.txt)
Voilà, voilà, ce n'est pas plus difficile que ça...à écrire parce qu'en code
oufti :-)
Merci encore.
@+

Guy FALESSE


"LE TROLL" <le a écrit dans le message de news:
%
Salut Guy :o)

If combo1.listindex > -1 Then: Combo1.Clear
dim p1 as long
Open "c:Catégories.txt" For Input As p1
Do While Not EOF(p1)
Input #p1, info$
Combo1.AddItem info$
Loop
Close p1

---> LA, je ne sais pas trop ce que tu veux faire, en tout cas, ce que tu
as fait est étrange???
-1- Tu supprimes sur test un élément de list, puis tu effaces la liste???
(comme sus-cité)...
-2- Puis tu recharges la liste avec un fichier...
-3- Si tu veux juste vider ta liste:
combo1.clear
-4- Au lieu de ça:
If combo1.listindex > -1 Then: Combo1.Clear
Ne voulais tu pas plutôt faire ça:
If combo1.listcount < 1 Then: Combo1.Clear
Soit si liste vide, mais si elle est vide, ce n'est pas la peine de la
vider...
Le ListIndex < 0, c'est une liste vide, ou un click au mauvais endroit
parfois...

QUESTIONS:
- Est-ce une liste vide que tu veux recharger avec le fichier?
- Ou, enlever sur test, simplement un élément de la liste, conserver le
reste de la liste, et le compléter par ce qu'il y a dans le fichier???
--------------------

"Guy FALESSE" a écrit dans le message de news:
OQ$
Bonjour à tous,
Donc, j'ai un comboBox base sur le fichier texte c:catégories.txt
J'ai un bouton qui contient le code ci-dessous, lorsque je mets le
spoints d'arrêt, tout semble fonctionner, mais rien ne se passe.
Lorsque je supprime un élément de la liste, il s'efface, en principe,
suivant le code, comme la liste est clear, le fait de ré-écrire tous les
éléments de cette liste dans le fichier texte devrait l'avoir supprimé
puisque on l'a suuprimé du combo et qu'on a fait combo1.clear.
Hé bien non, tout reste en l'état, alors que devrais-je faire?
Bien sûr, il suffit de d'employer Notepad et on supprime à la main :-)

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub

D'avance merci,

Guy FALESSE







Avatar
Guy FALESSE
Salut Driss,
Merci de ta réponse.

Je viens de tester ta correction, c'est OK, sauf que ça met une ligne vide
dans le fichier texte et par conséquent dans le combo.
@+

Guy FALESSE

"Driss HANIB" a écrit dans le message de news:
%
je me permets de compiler le correction de ng

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub





"ng" a écrit dans le message de
news:
Salut



Private Sub cmdSupprimer_Click()

Dim vValeurIndex
Dim info$
Dim i as integer, k as integer

vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
' Combo1.Clear ' ne sert à rien

' ici met comme l'a écrit ng la réécriture du fichier pour mettre à
jour
ta suppression
k=freefile
Open "c:....txt" for output as #k
For i = 0 to Combo1.ListCount
Print #k, Combo1.List(i)
Next
Close #k

Else
Beep
End If
End Sub


Il n'y a aucun code de réecriture dans le fichier ici... Ca va pas se


faire
tout seul. Combo1.Clear permet, comme son nom l'indique, d'effacer le
contenu de la combo. C'est tout.

Il faut ecrire un code qui boucle la combo et qui réecrit dans un fichier
texte :

dim k as integer, i as interger
k=freefile
Open "c:....txt" for output as #k
For i = 0 to Combo1.ListCount
Print #k, Combo1.List(i)
Next
Close #k

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/






Avatar
LE TROLL
Ah, ok Guy, alors voici;


option exlicit
dim i as integer
'
'ON CHARGE VALEUR i A LA VALEUR A
'SUPPRIMER DEPUIS UNE AUTRE PROCEDURE
'
Sub cmdSupprimer_Click()
dim p1 as long
dim info as string
'
if i <> combo1.listindex then exit sub
combo1.removeItem i
combo1.refresh
p1 = FreeFile
'SI LE FICHIER DOIT AVOIR LE
'MEME CONTENU QUE LA LISTE
Open "c:Catégories.txt" For output As p1
for i = 0 to combo1.listcount - 1
info = trim(combo1.list(i))
print #p1, info
next i
Close p1
End Sub
'
' Je n'ai pas testé, s'il y a quelques erreurs, le signaler,
dans le cas présent, on supprimer un élément de
' la liste que l'on remet ensuite à jour, puis on recrée un
fichier miroir de la liste, est-ce ça que tu veux ???
-------------------


"Guy FALESSE" a écrit dans le
message de news:
Salut Le Troll,
Ben, comme tu vois, j'ai tout mélangé, c'est comme ça,
quant on veut apprendre en copiant.
Ce que j'aurais voulu faire, c'est d'enlever un élément,
par exemple, j'avais : essai, testUn, testDeux etc.
Je voulais effacer essai et du combo et du fichier texte
(Catégories.txt)
Voilà, voilà, ce n'est pas plus difficile que ça...à
écrire parce qu'en code oufti :-)
Merci encore.
@+

Guy FALESSE


"LE TROLL" <le a écrit dans le message de
news: %
Salut Guy :o)

If combo1.listindex > -1 Then: Combo1.Clear
dim p1 as long
Open "c:Catégories.txt" For Input As p1
Do While Not EOF(p1)
Input #p1, info$
Combo1.AddItem info$
Loop
Close p1

---> LA, je ne sais pas trop ce que tu veux faire, en
tout cas, ce que tu as fait est étrange???
-1- Tu supprimes sur test un élément de list, puis tu
effaces la liste??? (comme sus-cité)...
-2- Puis tu recharges la liste avec un fichier...
-3- Si tu veux juste vider ta liste:
combo1.clear
-4- Au lieu de ça:
If combo1.listindex > -1 Then: Combo1.Clear
Ne voulais tu pas plutôt faire ça:
If combo1.listcount < 1 Then: Combo1.Clear
Soit si liste vide, mais si elle est vide, ce n'est pas
la peine de la vider...
Le ListIndex < 0, c'est une liste vide, ou un click au
mauvais endroit parfois...

QUESTIONS:
- Est-ce une liste vide que tu veux recharger avec le
fichier?
- Ou, enlever sur test, simplement un élément de la
liste, conserver le reste de la liste, et le compléter
par ce qu'il y a dans le fichier???
--------------------

"Guy FALESSE" a écrit dans le
message de news: OQ$
Bonjour à tous,
Donc, j'ai un comboBox base sur le fichier texte
c:catégories.txt
J'ai un bouton qui contient le code ci-dessous, lorsque
je mets le spoints d'arrêt, tout semble fonctionner,
mais rien ne se passe.
Lorsque je supprime un élément de la liste, il s'efface,
en principe, suivant le code, comme la liste est clear,
le fait de ré-écrire tous les éléments de cette liste
dans le fichier texte devrait l'avoir supprimé puisque
on l'a suuprimé du combo et qu'on a fait combo1.clear.
Hé bien non, tout reste en l'état, alors que devrais-je
faire?
Bien sûr, il suffit de d'employer Notepad et on supprime
à la main :-)

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher
le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub

D'avance merci,

Guy FALESSE











Avatar
Guy FALESSE
Salut Le Troll,
Merci de ta réponse,
Ça fonctionne...sauf qu'on ne peut effacer que le 1er élément de la liste.
Je n'ai pas testé autre chose.
@+

Guy FALESSE


"LE TROLL" <le a écrit dans le message de news:

Ah, ok Guy, alors voici;


option exlicit
dim i as integer
'
'ON CHARGE VALEUR i A LA VALEUR A
'SUPPRIMER DEPUIS UNE AUTRE PROCEDURE
'
Sub cmdSupprimer_Click()
dim p1 as long
dim info as string
'
if i <> combo1.listindex then exit sub
combo1.removeItem i
combo1.refresh
p1 = FreeFile
'SI LE FICHIER DOIT AVOIR LE
'MEME CONTENU QUE LA LISTE
Open "c:Catégories.txt" For output As p1
for i = 0 to combo1.listcount - 1
info = trim(combo1.list(i))
print #p1, info
next i
Close p1
End Sub
'
' Je n'ai pas testé, s'il y a quelques erreurs, le signaler, dans le cas
présent, on supprimer un élément de
' la liste que l'on remet ensuite à jour, puis on recrée un fichier miroir
de la liste, est-ce ça que tu veux ???
-------------------


"Guy FALESSE" a écrit dans le message de news:

Salut Le Troll,
Ben, comme tu vois, j'ai tout mélangé, c'est comme ça, quant on veut
apprendre en copiant.
Ce que j'aurais voulu faire, c'est d'enlever un élément, par exemple,
j'avais : essai, testUn, testDeux etc.
Je voulais effacer essai et du combo et du fichier texte (Catégories.txt)
Voilà, voilà, ce n'est pas plus difficile que ça...à écrire parce qu'en
code oufti :-)
Merci encore.
@+

Guy FALESSE


"LE TROLL" <le a écrit dans le message de news:
%
Salut Guy :o)

If combo1.listindex > -1 Then: Combo1.Clear
dim p1 as long
Open "c:Catégories.txt" For Input As p1
Do While Not EOF(p1)
Input #p1, info$
Combo1.AddItem info$
Loop
Close p1

---> LA, je ne sais pas trop ce que tu veux faire, en tout cas, ce que
tu as fait est étrange???
-1- Tu supprimes sur test un élément de list, puis tu effaces la
liste??? (comme sus-cité)...
-2- Puis tu recharges la liste avec un fichier...
-3- Si tu veux juste vider ta liste:
combo1.clear
-4- Au lieu de ça:
If combo1.listindex > -1 Then: Combo1.Clear
Ne voulais tu pas plutôt faire ça:
If combo1.listcount < 1 Then: Combo1.Clear
Soit si liste vide, mais si elle est vide, ce n'est pas la peine de la
vider...
Le ListIndex < 0, c'est une liste vide, ou un click au mauvais endroit
parfois...

QUESTIONS:
- Est-ce une liste vide que tu veux recharger avec le fichier?
- Ou, enlever sur test, simplement un élément de la liste, conserver le
reste de la liste, et le compléter par ce qu'il y a dans le fichier???
--------------------

"Guy FALESSE" a écrit dans le message de news:
OQ$
Bonjour à tous,
Donc, j'ai un comboBox base sur le fichier texte c:catégories.txt
J'ai un bouton qui contient le code ci-dessous, lorsque je mets le
spoints d'arrêt, tout semble fonctionner, mais rien ne se passe.
Lorsque je supprime un élément de la liste, il s'efface, en principe,
suivant le code, comme la liste est clear, le fait de ré-écrire tous
les éléments de cette liste dans le fichier texte devrait l'avoir
supprimé puisque on l'a suuprimé du combo et qu'on a fait combo1.clear.
Hé bien non, tout reste en l'état, alors que devrais-je faire?
Bien sûr, il suffit de d'employer Notepad et on supprime à la main :-)

Private Sub cmdSupprimer_Click()
Dim vValeurIndex
Dim info$
'
vValeurIndex = Combo1.ListIndex
'Si un élément est sélectionné, le supprimer et afficher le nombre
If vValeurIndex > -1 Then
Combo1.RemoveItem vValeurIndex
Combo1.Clear
Else
Beep
End If
Open "c:Catégories.txt" For Input As #1
Do While Not EOF(1)
Input #1, info$
Combo1.AddItem info$
Loop
Close #1
End Sub

D'avance merci,

Guy FALESSE















Avatar
ng
Salut,

Merci de ta réponse.
Comme ça, plus de problème, toute la liste est effacée et dans le combo et
dans le fichier texte.
Ce que j'aurais souhaité était seulement d'effacer l'item sélectionné.



Il est évident que mon code est a appelé apres le removeitem mais *AVANT* le
clear qui efface tout, donc c'est normal.



--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Avatar
Guy FALESSE
Salut Nicolas,

Il n'y a que comme ça que j'apprendrai quelque chose, que c'est compliqué
tout ça :-)
Encore merci et @+

Guy FALESSE


"ng" a écrit dans le message de news:
%

Salut,

Merci de ta réponse.
Comme ça, plus de problème, toute la liste est effacée et dans le combo
et
dans le fichier texte.
Ce que j'aurais souhaité était seulement d'effacer l'item sélectionné.



Il est évident que mon code est a appelé apres le removeitem mais *AVANT*
le
clear qui efface tout, donc c'est normal.



--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


1 2