Problème sur listbox [Résolu]

Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
31 mars 2013
- 7 juin 2009 à 15:22 - Dernière réponse :
Messages postés
1570
Date d'inscription
mardi 16 juin 2009
Dernière intervention
24 mars 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 7 juin 2009 à 15:39
3
Merci
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







++

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de PCPT
Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 7 juin 2009 à 15:42
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
31 mars 2013
- 7 juin 2009 à 17:16
3
Merci
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

Merci thomasf007 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de thomasf007
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 7 juin 2009 à 17:48
0
Merci
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 )
Commenter la réponse de PCPT
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
31 mars 2013
- 7 juin 2009 à 18:18
0
Merci
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
Commenter la réponse de thomasf007
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 7 juin 2009 à 18:45
0
Merci
çà 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
Commenter la réponse de PCPT
Messages postés
1570
Date d'inscription
mardi 16 juin 2009
Dernière intervention
24 mars 2011
- 10 juin 2009 à 12:42
0
Merci
écrire

     ListBox1.TextBox1.value

a la place de

     With ListBox1
                 .AddItem TextBox1.Value
     End With

est plus pratique
Commenter la réponse de garion28

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.