thomasf007
Messages postés36Date d'inscriptionvendredi 23 mai 2008StatutMembreDernière intervention31 mars 2013
-
7 juin 2009 à 15:22
garion28
Messages postés1543Date d'inscriptionmardi 16 juin 2009StatutMembreDerniè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?
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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
thomasf007
Messages postés36Date d'inscriptionvendredi 23 mai 2008StatutMembreDernière intervention31 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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 )
Vous n’avez pas trouvé la réponse que vous recherchez ?
thomasf007
Messages postés36Date d'inscriptionvendredi 23 mai 2008StatutMembreDernière intervention31 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?