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

4 réponses

1 2
Avatar
LE TROLL
Salut Guy,

Peut être que tu pourrais séparer, là tu attaques tout
en même temps...
Commencer pas les listes, voir toutes leurs commandes, les
manipuler, et après voir les fichiers, tester, puis en
dernier réunir les deux...
-------------

"Guy FALESSE" a écrit dans le
message de news:
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/






Avatar
Guy FALESSE
Salut Le Troll,
En fait, je suis occupé à essayer de faire une base de données contenant
certaines données de mes CD de données justement.
Je coinçais dans le fait de pouvoir créer un combox qui recençait les divers
catégories, sinon, je suis un peu avancé dans le traitement de recherche, de
créer un datagrid, par contre, j'ai coincé avec un flexgrid, mais le but du
jeu étant de retrouver certaines données comme le nom de certains fichiers,
je n'ai pas besoin de beaucoup de choses.
Merci beaucoup et @+
Guy FALESSE


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

Peut être que tu pourrais séparer, là tu attaques tout en même temps...
Commencer pas les listes, voir toutes leurs commandes, les manipuler, et
après voir les fichiers, tester, puis en dernier réunir les deux...
-------------

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

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/










Avatar
Driss HANIB
Une correction à faire sur la ligne : For i = 0 to Combo1.ListCount-1
Et plus ce problème de ligne vide..

Driss

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-1 '< <<<<< correction à mettre
ici
Print #k, Combo1.List(i)
Next
Close #k

Else
Beep
End If
End Sub
Avatar
Guy FALESSE
Salut Driss,

Merci de ta réponse.
Finalement, tout est rentré dans l'ordre, voici d'ailleurs le code complet
grâce à la gentillesse de tous ceux qui m'ont répondu.

@+

Guy FALESSE


Option Explicit

Private AFFICH As String

Private Sub Combo1_Click()

'Si un élément de la liste est sélectionné, le supprime

Combo1.RemoveItem Combo1.ListIndex

'Appelle la sub qui met le fichier à jour

Call WriteFile

End Sub

'Valide la sélection

Private Sub Combo1_KeyPress(KeyAscii As Integer)

'Si touche Enter pressée alors que le focus est sur le combo

If KeyAscii = 13 Then

'Ajoute le contenu du texte saisi dans le Combo (si diférent de l'invite)

If Combo1.Text <> "Tapez votre Saisie" Then Combo1.AddItem Combo1.Text,
Combo1.ListCount

'Met le focus sur l'invite de saisie

Combo1.ListIndex = 0

'Appelle la sub qui met le fichier à jour

Call WriteFile

End If

End Sub

'Supprime la sélection

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)

Dim i As Integer

'Si la touche suppr pressée alors que le focus est sur le combo

If KeyCode = vbKeyDelete And Combo1.Text <> AFFICH Then

'Supprime la sélection

Combo1.RemoveItem Combo1.ListIndex

'Appelle la sub qui met le fichier à jour

Call WriteFile

End If

End Sub

'Affiche l'invite de saisie suite à une suppression

Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyDelete And Combo1.Text <> AFFICH Then

Combo1.Text = AFFICH

Combo1.ListIndex = 0

End If

End Sub

'Chargement de la page

Private Sub Form_Load()

'Définit l'invite de saisie

AFFICH = "Tapez votre Saisie"

'Ajoute l'invite de saisie dans le combo au chargement de la page

Combo1.AddItem AFFICH

Combo1.ListIndex = 0

End Sub

'Ecrit/met à jour le fichier

Private Sub WriteFile()

Dim k As Integer, i As Integer

k = FreeFile

'Ouvre le fichier, et le réécrit (ajout, suppression)

Open "C:test.txt" For Output As #k 'Modifie l'emplacement et le nom du

fichier à ta convenance !

For i = 0 To Combo1.ListCount - 1

If Combo1.List(i) <> AFFICH Then Print #k, Combo1.List(i)

Next

Close #k

End Sub

"Driss HANIB" a écrit dans le message de news:

Une correction à faire sur la ligne : For i = 0 to Combo1.ListCount-1
Et plus ce problème de ligne vide..

Driss

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-1 '< <<<<< correction à mettre
ici
Print #k, Combo1.List(i)
Next
Close #k

Else
Beep
End If
End Sub




1 2