Problème sur listbox

Résolu
thomasf007 Messages postés 36 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 31 mars 2013 - 7 juin 2009 à 15:22
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 - 10 juin 2009 à 12:42
Bonjour à tous

J'ai une listbox avec 2 boutons : 1 permet d'ajouter un mot, l'autre permets d'en retirer.
-Je souhaiterai, lorsque j'ajoute un mot, avant de le mettre sur la list box il verifie s'il existe déjà sur la liste (avec un message qui dit que ce mot est déjà sur la liste)
-J'ai déjà trouver comment mettre et retirer les mot de la listbox. Cependant, lorsque je ferme le Userform, je perd également toute les donnée de la listbox. Quand j'ouvre de nouveau, il faut que j'insère à nouveau tous les mots que j'avais avant. N'est-il pas possible d'éviter de perdre ces données?

Merci d'avance et j'espère avoir été clair

ThomasF

7 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juin 2009 à 15:39
normal que tu les perdes si tu ne les enregistres pas... les données ne vont pas ré-apparaître par magie ou juste par bonne volonté

un peu de recherche, du tout cuit prêt à l'emploi :



<hr />
'    CHARGER UN COMBOBOX OU UNE LISTBOX À PARTIR D'UN FICHIER (ET VICE
VERSA)
'    http://www.codyx.org/snippet_charger-combobox-ou-listbox-partir-fichier-vice-versa_294.aspx#952
'    Posté par [ PCPT ] le 04/02/2007
<hr />




Public Sub 
LoadLstCboFromFile(
ByRef 
oObj 
As Object
, sPath
As String
,
Optional
bClear
As Boolean
=
True
)


'   oObj doit être une ListBox ou
un ComboBox n'étant pas en lecture seule

    Dim FF As Integer, sLine As String
    FF = FreeFile
    
    If bClear Then oObj.Clear
    If LenB(Dir(sPath, vbSystem Or vbHidden)) > 0 Then
        Open sPath For Input As #FF
            Do Until EOF(FF)
                Line Input #FF, sLine
                If LenB(sLine) > 0 Then oObj.AddItem
sLine
            Loop
        Close #FF
    End If
End Sub

Public Sub SaveLstCboToFile(ByRef oObj As Object, sPath As String)
'   oObj doit être une ListBox ou
un ComboBox
    Dim FF As Integer, i As Integer
    FF = FreeFile
    
    Open sPath For Output As #FF
        For i = 0 To oObj.ListCount - 1
            Print #FF, oObj.List(i)
        Next
    Close #FF
End Sub







++
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 juin 2009 à 15:42
Salut

-1- Il te suffit de faire une boucle de lecture depuis le premier Item jusqu'au dernier.
Tu as besoin de :
   For-Next
   maListBox.ListCount
   If-Then
   maListBox.List(x)
-2- Avec le même principe de listage des items dans la ListBox, il te suffit d'enregistrer les données dans un fichier texte.
Tu as besoin de :
   FreeFile
   Open
   Print #
   Close #
Et pour la relecture, il faudra ajouter :
   Do-While
   EOF(x)
   Line Input #

Voilà, tu as les éléments du puzzle.
Le reste est expliqué avec des exemples dans l'aide de chacune de ces instructions.
Tu trouveras aussi les exemples parmi les codes du site en cherchant parmi les codes en excluant .Net

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
thomasf007 Messages postés 36 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 31 mars 2013
7 juin 2009 à 17:16
Merci de votre aide


Toutefois, j'avoue que j'ai un peu de mal (je coule même ...) avec FOR NEXT...
J'essaye de trouver de l'aide, même avec mon bouquin VBA pour 2007 (ordi du boulot)....

Actuellement j'essaie de me dépatouiller avec ça.... mais il me met une erreur.
Quelqu'un peu me donner un petit coup de pouce?
Je pense que l'erreur se situe juste après "For", mais je ne l'ai jamais utilisé...
(je rappelle juste : il lit la liste active, et m'informe si le mot que j'essaye de rentrer existe déjà)

Private Sub CommandButton1_Click()
For MaListbox = 1 To ListBox1.ListCount
    If TextBox1.Value = ListBox1.ListCount Then
    MsgBox (" "), vbInformation
    Else
        With ListBox1
            .AddItem TextBox1.Value
        End With
    End If
Next MaListbox
End Sub

Merci de votre aide

ThomasF
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juin 2009 à 17:48
mis à part que tu as le code juste au dessus... (donc tant utilisable que lisible en tant qu'exemple), je vais te traduire en français ce que tu as codé :


For MaListbox = 1 To ListBox1.ListCount

de Variable_Non_Declaree 1 jusqu'à Nombre_d'items_dans_listbox1



    If TextBox1.Value = ListBox1.ListCount Then

si chiffre_dans_zone_texte =


Nombre_d'items_dans_listbox1



        MsgBox (" "), vbInformation

alerte



    Else

sinon



        ListBox1.AddItem TextBox1.Value

ajoute valeur_zone_texte_vers_listbox



    End If

fin si



Next MaListbox


item suivant




spécial non?
çà veut dire qu'à chaque clique, tant que la zone de texte ne contient pas juste le nombre d'éléments dans la liste, tu vas ajouter le texte autant de fois qu'il y a d'items (sans compter que le count va changer )
0

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

Posez votre question
thomasf007 Messages postés 36 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 31 mars 2013
7 juin 2009 à 18:18
C'est spécial quand c'est traduit... Surtout quand le programme ne veux rien dire...
Anvant que tu ne réponde, j'ai vu ce qui s'est passé :effectivement, il me rajoute de texte autant de fois qu'il y a d'item
Qu'entends tu par "mis à part que tu as le code juste au dessus..." ?

Ce qui est au dessus n'est que pour la sauvegarde, non?

Sinon, tout est faux dans ce que j'ai fais? où il faut corriger une petite chose?
 
Merci de ton aide

TF
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juin 2009 à 18:45
çà ne fait que sauver oui, puisque tu avais dit :

J'ai déjà trouver comment mettre et retirer les mot de la listbox





tout est faux? beh à en lire le texte en rouge et à ne pas avoir le résultat escompté, il y a fort à parier non?
mais tu as tous les éléments pour....

pis tu peux effectuer des recherches sur www.codyx.org, tu dois connaître le site maintenant puisque tu en as un bout au dessus....

bonne découverte
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011
10 juin 2009 à 12:42
écrire

     ListBox1.TextBox1.value

a la place de

     With ListBox1
                 .AddItem TextBox1.Value
     End With

est plus pratique
0
Rejoignez-nous