Pas moyen d'effacer un élément dans un fichier texte qui est la source d'un comboBox
14 réponses
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
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/
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" <guy.falesse@skynet.be> a écrit dans le
message de news: uZPFMN3OFHA.1396@TK2MSFTNGP10.phx.gbl...
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" <ng@ngsoft-fr.com> a écrit dans le message de news:
%23JtvdF3OFHA.1932@tk2msftngp13.phx.gbl...
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/
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/
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/
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 troll@paris.fr> a écrit dans le message de news:
%23rppUn3OFHA.524@TK2MSFTNGP09.phx.gbl...
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" <guy.falesse@skynet.be> a écrit dans le message de news:
uZPFMN3OFHA.1396@TK2MSFTNGP10.phx.gbl...
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" <ng@ngsoft-fr.com> a écrit dans le message de news:
%23JtvdF3OFHA.1932@tk2msftngp13.phx.gbl...
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/
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/
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
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
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
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
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" <dhanib@club-internet.fr> a écrit dans le message de news:
OMtSg4BPFHA.2532@TK2MSFTNGP09.phx.gbl...
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
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