Le contenu d'une liste peut être
manipulé à partir du code et non seulement à l'aide de la
fenêtre des propriétés. Cela peut se révéler très utile
lorsqu'on veut changer leur contenu sans avoir à aller jouer
dans le code du programme à chaque fois.
-
Commencez par ouvrir
le Bloc-notes (Programmes, Accessoires, Bloc-notes).
-
Tapez le texte
ci-dessous exactement de la façon indiquée.
Un|Deux|Trois|Quatre|Cinq|
-
Enregistrez ce
fichier sous le nom Liste.Txt dans le même
répertoire que celui où vous allez sauvegarder votre
programme VisualBasic.
-
Créez une nouveau
programme que vous nommez Ex_15xx.vbp. Nommez la
feuille F_Liste et réglez la propriété CAPTION
à Travail avec les listes. Les autres
caractéristiques de la feuille sont laissées à votre
discrétion.
-
Ajoutez une
étiquette que vous nommez ET_Message dans le haut de la
feuille (voir l'image plus bas). Voici les
caractéristiques que vous devez respecter (les autres
sont libres):
-
Ajoutez une liste (ComboBox)
que vous nommez CO_Liste. Les propriétés TEXT et LIST
sont vides. Toutes les autres caractéristiques sont
laissées à votre bon goût.

-
Ajoutez un nouveau module .BAS que
vous nommez Module1.bas. Servez-vous de celui-ci pour
initialiser les variables suivantes.
Global V_items() As
Variant
Global V_C As Integer
Global V_Liste As String
-
Créez une nouvelle
procédure que vous nommez Séparer. Voici le code
qu'elle contient.
Public Sub Separer()
Dim V_a, V_d As Integer 'Déclaration des variables
Dim V_b As String
V_b = ""
'Réinitialisation des variables
V_C = 0
V_d = 0
'Extraction
des éléments de la liste
For V_a = 1 To Len(V_Liste)
'Boucle en fonction du nombre de caractères-->
de la liste
If Mid(V_Liste, V_a, 1) <> "|" Then
'Si le caractère est différent de |...
V_b = V_b & Mid(V_Liste, V_a, 1)
'On l'ajoute à V_B...
Else 'sinon...
V_C = V_C + 1
'on augmente la valeur de V_C...
ReDim Preserve
V_items(V_C) 'on
agrandit la variable dimensionnée...
V_items(V_C - 1) = V_b
'on ajoute le contenu de V_b dans la variable...
V_b = ""
'on réinitialise la variable
End If
Next V_a
ReDim Preserve V_items(V_C - 1)
'on enlève l'espace vide..
End Sub
-
Ajoutez le
code ci-dessous dans l'événement FORM_LOAD de la
feuille F_Liste.
Private Sub Form_Load()
Dim V_Chemin As String
'Déclaration des variables
Dim V_Fichier As String
Dim V_I As Integer
Dim V_N As Long
'Servira pour le tri à bulles
V_Fichier = ""
'Initialisation des variables
V_Chemin = ""
V_Chemin = App.Path
'Recherche du chemin de l'application (répertoires)
If Right(V_Chemin, 1) <> "\" Then
'Vérifier le dernier caractère de App.path
V_Fichier = V_Chemin &
"\Liste.txt"
'Création de l'adresse du fichier
Else
V_Fichier = V_Chemin &
"Liste.txt"
'Création de l'adresse du fichier
End if
V_Liste = "" 'Réinitialisation de V_Liste
Open V_Fichier For Input As #1
'Ouverture du fichier
Line Input #1, V_Liste 'Lecture des données
Close #1 'Fermeture du fichier
Separer 'Appel de la procédure
d'identification des items de la
liste
V_N = UBound(V_items)
'Ubound donne le nombre d'items dans la liste
ReDim Preserve V_items(V_N)
'Redimensionne la liste une
dernière fois
Tri_A_Bulles V_N, V_items(), True
'Appel de la procédure de tri en ordre -->
tique croissant (False donnerait un ordre
décroissant)
For V_I = 0 To V_C - 1 'Boucle d'attribution des éléments à la liste
CO_Liste.List(V_I) = V_items(V_I)
Next V_I
CO_Liste.Text = "Vos choix" 'Attribution du texte à la liste
End Sub
-
Poursuivez en créant la nouvelle
procédure ci-dessous qui sert à classer les éléments
en ordre alphabétique. La technique utilisée s'appelle
Tri à bulle. Ce n'est pas nécessairement la plus
efficace, mais le nombre d'éléments étant limité, elle
convient parfaitement à la situation.
Sub Tri_A_Bulles (ByVal Nb_Element As Long, Tableau() As Variant, ByVal
-->
Sens As Boolean)
' Si Sens = True, le tri est croissant
Dim V_I As Long 'Initialisation
des variables
Dim V_J As Long
Dim V_Ligne_Tampon As Variant
'variable intermédiaire utilisée pour la -->
permutation de ligne
For V_I = 1 To Nb_Element + 1
For V_J = 0 To Nb_Element - V_I
If (Tableau(V_J) > Tableau(V_J + 1) And Sens) Or (Tableau(V_J) <
-->
Tableau(V_J + 1) And Not Sens) Then 'Comparaison
des données
V_Ligne_Tampon = Tableau(V_J)
'Donnée placée en réserve
Tableau(V_J) = Tableau(V_J + 1)
'Échange de valeur des variables
Tableau(V_J + 1) = V_Ligne_Tampon
'Retour de la donnée en réserve
End If
Next V_J
Next V_I
End Sub
-
Ajoutez enfin le
code suivant dans la liste CO_Liste.
Private Sub Co_Liste_Click()
'Affichage de l'item sélectionné
MsgBox CO_Liste.List(CO_Liste.ListIndex)
End Sub
-
Enregistrez votre programme et testez-le.
Les options de la liste sont ajoutées dynamiquement, en
ordre alphabétique croissant et le contenu de l'item
sélectionné est affiché lors de la sélection.
Application:
- Créez une nouvelle liste
contenant 7 noms de personnes placés en désordre. Faites
afficher cette liste en ordre décroissant. Enregistrez votre
nouvelle version sous le nom Ex_15bxx.vbp.
|