Bonjour,
J'ai dans mon appli une listbox et je souhaiterais que l'utilisateur
puisse trier son contenu si nécessaire à l'aide d'un checkbox.
Le problème c'est la propriété "sorted" de la listbox qui est en lecture
seule donc j'avais pensé me servir de deux listbox qui auraient en
permanence un contenu identique, puis de les rendre visible ou non
suivant la position du checkbox.
Est-ce une bonne solution ?
Admettons que oui ;-) maintenant, j'aimerais bien réussir à synchroniser
des deux listes. C'est à dire que l'item sélectionné soit le même en
permanence des deux côtés pour pouvoir faire des modifications (addItem,
removeItem) d'un seul coup.
Donc voici ce que j'ai fait :
Placez tout d'abord deux listbox sur une feuille.
Option Explicit
Private Sub Form_Load()
List1.AddItem "France"
List1.AddItem "Belgique"
List1.AddItem "Luxembourg"
List1.AddItem "Suède"
List1.AddItem "Paxs Bas"
List2.AddItem "France"
List2.AddItem "Belgique"
List2.AddItem "Luxembourg"
List2.AddItem "Suède"
List2.AddItem "Paxs Bas"
End Sub
Private Sub List1_Click()
Dim i As Integer
For i = 0 To List2.ListCount - 1
List2.ListIndex = i
If List1.Text = List2.Text Then
Exit Sub
End If
Next i
End Sub
Ca fonctionne mais si je rajoute le bout de code (symétrique si l'on
peut dire) dans la seconde listbox, ça cafouille :
Private Sub List2_Click()
Dim j As Integer
For j = 0 To List1.ListCount - 1
List1.ListIndex = i
If List2.Text = List1.Text Then
Exit Sub
End If
Next j
End Sub
Quelqu'un a une idée ?
Merci de votre aide
--
Franck
Bonjour,
J'ai dans mon appli une listbox et je souhaiterais que l'utilisateur
puisse trier son contenu si nécessaire à l'aide d'un checkbox.
Le problème c'est la propriété "sorted" de la listbox qui est en lecture
seule donc j'avais pensé me servir de deux listbox qui auraient en
permanence un contenu identique, puis de les rendre visible ou non
suivant la position du checkbox.
Est-ce une bonne solution ?
Admettons que oui ;-) maintenant, j'aimerais bien réussir à synchroniser
des deux listes. C'est à dire que l'item sélectionné soit le même en
permanence des deux côtés pour pouvoir faire des modifications (addItem,
removeItem) d'un seul coup.
Donc voici ce que j'ai fait :
Placez tout d'abord deux listbox sur une feuille.
Option Explicit
Private Sub Form_Load()
List1.AddItem "France"
List1.AddItem "Belgique"
List1.AddItem "Luxembourg"
List1.AddItem "Suède"
List1.AddItem "Paxs Bas"
List2.AddItem "France"
List2.AddItem "Belgique"
List2.AddItem "Luxembourg"
List2.AddItem "Suède"
List2.AddItem "Paxs Bas"
End Sub
Private Sub List1_Click()
Dim i As Integer
For i = 0 To List2.ListCount - 1
List2.ListIndex = i
If List1.Text = List2.Text Then
Exit Sub
End If
Next i
End Sub
Ca fonctionne mais si je rajoute le bout de code (symétrique si l'on
peut dire) dans la seconde listbox, ça cafouille :
Private Sub List2_Click()
Dim j As Integer
For j = 0 To List1.ListCount - 1
List1.ListIndex = i
If List2.Text = List1.Text Then
Exit Sub
End If
Next j
End Sub
Quelqu'un a une idée ?
Merci de votre aide
--
Franck
Bonjour,
J'ai dans mon appli une listbox et je souhaiterais que l'utilisateur
puisse trier son contenu si nécessaire à l'aide d'un checkbox.
Le problème c'est la propriété "sorted" de la listbox qui est en lecture
seule donc j'avais pensé me servir de deux listbox qui auraient en
permanence un contenu identique, puis de les rendre visible ou non
suivant la position du checkbox.
Est-ce une bonne solution ?
Admettons que oui ;-) maintenant, j'aimerais bien réussir à synchroniser
des deux listes. C'est à dire que l'item sélectionné soit le même en
permanence des deux côtés pour pouvoir faire des modifications (addItem,
removeItem) d'un seul coup.
Donc voici ce que j'ai fait :
Placez tout d'abord deux listbox sur une feuille.
Option Explicit
Private Sub Form_Load()
List1.AddItem "France"
List1.AddItem "Belgique"
List1.AddItem "Luxembourg"
List1.AddItem "Suède"
List1.AddItem "Paxs Bas"
List2.AddItem "France"
List2.AddItem "Belgique"
List2.AddItem "Luxembourg"
List2.AddItem "Suède"
List2.AddItem "Paxs Bas"
End Sub
Private Sub List1_Click()
Dim i As Integer
For i = 0 To List2.ListCount - 1
List2.ListIndex = i
If List1.Text = List2.Text Then
Exit Sub
End If
Next i
End Sub
Ca fonctionne mais si je rajoute le bout de code (symétrique si l'on
peut dire) dans la seconde listbox, ça cafouille :
Private Sub List2_Click()
Dim j As Integer
For j = 0 To List1.ListCount - 1
List1.ListIndex = i
If List2.Text = List1.Text Then
Exit Sub
End If
Next j
End Sub
Quelqu'un a une idée ?
Merci de votre aide
--
Franck
Bonjour,
J'ai dans mon appli une listbox et je souhaiterais que l'utilisateur
puisse trier son contenu si nécessaire à l'aide d'un checkbox.
Le problème c'est la propriété "sorted" de la listbox qui est en lecture
seule donc j'avais pensé me servir de deux listbox qui auraient en
permanence un contenu identique, puis de les rendre visible ou non
suivant la position du checkbox.
Est-ce une bonne solution ?
Admettons que oui ;-) maintenant, j'aimerais bien réussir à synchroniser
des deux listes. C'est à dire que l'item sélectionné soit le même en
permanence des deux côtés pour pouvoir faire des modifications (addItem,
removeItem) d'un seul coup.
Donc voici ce que j'ai fait :
Placez tout d'abord deux listbox sur une feuille.
Option Explicit
Private Sub Form_Load()
List1.AddItem "France"
List1.AddItem "Belgique"
List1.AddItem "Luxembourg"
List1.AddItem "Suède"
List1.AddItem "Paxs Bas"
List2.AddItem "France"
List2.AddItem "Belgique"
List2.AddItem "Luxembourg"
List2.AddItem "Suède"
List2.AddItem "Paxs Bas"
End Sub
Private Sub List1_Click()
Dim i As Integer
For i = 0 To List2.ListCount - 1
List2.ListIndex = i
If List1.Text = List2.Text Then
Exit Sub
End If
Next i
End Sub
Ca fonctionne mais si je rajoute le bout de code (symétrique si l'on
peut dire) dans la seconde listbox, ça cafouille :
Private Sub List2_Click()
Dim j As Integer
For j = 0 To List1.ListCount - 1
List1.ListIndex = i
If List2.Text = List1.Text Then
Exit Sub
End If
Next j
End Sub
Quelqu'un a une idée ?
Merci de votre aide
--
Franck
Bonjour,
J'ai dans mon appli une listbox et je souhaiterais que l'utilisateur
puisse trier son contenu si nécessaire à l'aide d'un checkbox.
Le problème c'est la propriété "sorted" de la listbox qui est en lecture
seule donc j'avais pensé me servir de deux listbox qui auraient en
permanence un contenu identique, puis de les rendre visible ou non
suivant la position du checkbox.
Est-ce une bonne solution ?
Admettons que oui ;-) maintenant, j'aimerais bien réussir à synchroniser
des deux listes. C'est à dire que l'item sélectionné soit le même en
permanence des deux côtés pour pouvoir faire des modifications (addItem,
removeItem) d'un seul coup.
Donc voici ce que j'ai fait :
Placez tout d'abord deux listbox sur une feuille.
Option Explicit
Private Sub Form_Load()
List1.AddItem "France"
List1.AddItem "Belgique"
List1.AddItem "Luxembourg"
List1.AddItem "Suède"
List1.AddItem "Paxs Bas"
List2.AddItem "France"
List2.AddItem "Belgique"
List2.AddItem "Luxembourg"
List2.AddItem "Suède"
List2.AddItem "Paxs Bas"
End Sub
Private Sub List1_Click()
Dim i As Integer
For i = 0 To List2.ListCount - 1
List2.ListIndex = i
If List1.Text = List2.Text Then
Exit Sub
End If
Next i
End Sub
Ca fonctionne mais si je rajoute le bout de code (symétrique si l'on
peut dire) dans la seconde listbox, ça cafouille :
Private Sub List2_Click()
Dim j As Integer
For j = 0 To List1.ListCount - 1
List1.ListIndex = i
If List2.Text = List1.Text Then
Exit Sub
End If
Next j
End Sub
Quelqu'un a une idée ?
Merci de votre aide
--
Franck
Bonjour,
J'ai dans mon appli une listbox et je souhaiterais que l'utilisateur
puisse trier son contenu si nécessaire à l'aide d'un checkbox.
Le problème c'est la propriété "sorted" de la listbox qui est en lecture
seule donc j'avais pensé me servir de deux listbox qui auraient en
permanence un contenu identique, puis de les rendre visible ou non
suivant la position du checkbox.
Est-ce une bonne solution ?
Admettons que oui ;-) maintenant, j'aimerais bien réussir à synchroniser
des deux listes. C'est à dire que l'item sélectionné soit le même en
permanence des deux côtés pour pouvoir faire des modifications (addItem,
removeItem) d'un seul coup.
Donc voici ce que j'ai fait :
Placez tout d'abord deux listbox sur une feuille.
Option Explicit
Private Sub Form_Load()
List1.AddItem "France"
List1.AddItem "Belgique"
List1.AddItem "Luxembourg"
List1.AddItem "Suède"
List1.AddItem "Paxs Bas"
List2.AddItem "France"
List2.AddItem "Belgique"
List2.AddItem "Luxembourg"
List2.AddItem "Suède"
List2.AddItem "Paxs Bas"
End Sub
Private Sub List1_Click()
Dim i As Integer
For i = 0 To List2.ListCount - 1
List2.ListIndex = i
If List1.Text = List2.Text Then
Exit Sub
End If
Next i
End Sub
Ca fonctionne mais si je rajoute le bout de code (symétrique si l'on
peut dire) dans la seconde listbox, ça cafouille :
Private Sub List2_Click()
Dim j As Integer
For j = 0 To List1.ListCount - 1
List1.ListIndex = i
If List2.Text = List1.Text Then
Exit Sub
End If
Next j
End Sub
Quelqu'un a une idée ?
Merci de votre aide
--
Franck
Je ne comprends pas la finalité de ce que tu veux faire en
pratique ???
Je ne comprends pas la finalité de ce que tu veux faire en
pratique ???
Je ne comprends pas la finalité de ce que tu veux faire en
pratique ???
Merci à Laurent pour l'idée mais je doute que j'arrive à quelque chose
d'aussi performant qu'en utilisant la propriété "sorted" d'une listbox.
J'ai fait un essai sur 1000 entrées et le tri est quasi instantanné. Je
ne dis pas que ce n'est pas possible mais cela reviendrait à ce que je
mette en place la routine de tri non ?
> Je ne comprends pas la finalité de ce que tu veux faire en
> pratique ???
C'est simple. J'ai une liste d'items qui peut atteindre 2000-3000
entrées
(ce n'est pas des pays comme l'exemple) et je souhaiterais que
l'utilisateur puisse les trier par ordre alphabétique.
Donc j'avais pensé à ces deux listes :
- List1 : visible si tri par ordre d'entrée dans la liste
- List2 : visible si tri alphabétique.
J'ai testé et ça marche très bien. On a vraiment l'impression de ne voir
qu'une seule liste. Le problème qui se pose est que l'utilisateur peut
sélectionner un enregistrement pour soit le modifier ou le supprimer.
Et j'aimerais que ces choix soient dispos dans les deux modes de tris.
Je me suis donc dit : il faut que les listes aient un contenu identique
en permanence. Si un item est supprimé dans la liste 1, il faut le
retrouver dans la liste 2 (qui est alors masquée) pour le supprimer
également. Et inversement.
Donc voila en fait, le problème revient à retrouver dans la seconde
liste l'item sélectionné dans la première pour soit le supprimer ou
remplacer son contenu.
En fait, ce n'est pas si compliqué et je pense y être arrivé. En tout
cas, ça fonctionne dans mon appli. J'essaie si j'ai le temps de donner
le code en exemple, un peu plus tard.
Pour connaître le contenu d'un item, c'est vrai que c'est list(i) en
principe qu'il convient d'utiliser mais la propriété Text a l'air de
fonctionner tout aussi bien, non ?
Merci à vous deux.
--
Franck
Merci à Laurent pour l'idée mais je doute que j'arrive à quelque chose
d'aussi performant qu'en utilisant la propriété "sorted" d'une listbox.
J'ai fait un essai sur 1000 entrées et le tri est quasi instantanné. Je
ne dis pas que ce n'est pas possible mais cela reviendrait à ce que je
mette en place la routine de tri non ?
> Je ne comprends pas la finalité de ce que tu veux faire en
> pratique ???
C'est simple. J'ai une liste d'items qui peut atteindre 2000-3000
entrées
(ce n'est pas des pays comme l'exemple) et je souhaiterais que
l'utilisateur puisse les trier par ordre alphabétique.
Donc j'avais pensé à ces deux listes :
- List1 : visible si tri par ordre d'entrée dans la liste
- List2 : visible si tri alphabétique.
J'ai testé et ça marche très bien. On a vraiment l'impression de ne voir
qu'une seule liste. Le problème qui se pose est que l'utilisateur peut
sélectionner un enregistrement pour soit le modifier ou le supprimer.
Et j'aimerais que ces choix soient dispos dans les deux modes de tris.
Je me suis donc dit : il faut que les listes aient un contenu identique
en permanence. Si un item est supprimé dans la liste 1, il faut le
retrouver dans la liste 2 (qui est alors masquée) pour le supprimer
également. Et inversement.
Donc voila en fait, le problème revient à retrouver dans la seconde
liste l'item sélectionné dans la première pour soit le supprimer ou
remplacer son contenu.
En fait, ce n'est pas si compliqué et je pense y être arrivé. En tout
cas, ça fonctionne dans mon appli. J'essaie si j'ai le temps de donner
le code en exemple, un peu plus tard.
Pour connaître le contenu d'un item, c'est vrai que c'est list(i) en
principe qu'il convient d'utiliser mais la propriété Text a l'air de
fonctionner tout aussi bien, non ?
Merci à vous deux.
--
Franck
Merci à Laurent pour l'idée mais je doute que j'arrive à quelque chose
d'aussi performant qu'en utilisant la propriété "sorted" d'une listbox.
J'ai fait un essai sur 1000 entrées et le tri est quasi instantanné. Je
ne dis pas que ce n'est pas possible mais cela reviendrait à ce que je
mette en place la routine de tri non ?
> Je ne comprends pas la finalité de ce que tu veux faire en
> pratique ???
C'est simple. J'ai une liste d'items qui peut atteindre 2000-3000
entrées
(ce n'est pas des pays comme l'exemple) et je souhaiterais que
l'utilisateur puisse les trier par ordre alphabétique.
Donc j'avais pensé à ces deux listes :
- List1 : visible si tri par ordre d'entrée dans la liste
- List2 : visible si tri alphabétique.
J'ai testé et ça marche très bien. On a vraiment l'impression de ne voir
qu'une seule liste. Le problème qui se pose est que l'utilisateur peut
sélectionner un enregistrement pour soit le modifier ou le supprimer.
Et j'aimerais que ces choix soient dispos dans les deux modes de tris.
Je me suis donc dit : il faut que les listes aient un contenu identique
en permanence. Si un item est supprimé dans la liste 1, il faut le
retrouver dans la liste 2 (qui est alors masquée) pour le supprimer
également. Et inversement.
Donc voila en fait, le problème revient à retrouver dans la seconde
liste l'item sélectionné dans la première pour soit le supprimer ou
remplacer son contenu.
En fait, ce n'est pas si compliqué et je pense y être arrivé. En tout
cas, ça fonctionne dans mon appli. J'essaie si j'ai le temps de donner
le code en exemple, un peu plus tard.
Pour connaître le contenu d'un item, c'est vrai que c'est list(i) en
principe qu'il convient d'utiliser mais la propriété Text a l'air de
fonctionner tout aussi bien, non ?
Merci à vous deux.
--
Franck
Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
se trie en moins d'une seconde... Tu peux aussi utiliser une variable
indicée, ou encore un fichier.tmp, y a aucun problème :o)
Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
se trie en moins d'une seconde... Tu peux aussi utiliser une variable
indicée, ou encore un fichier.tmp, y a aucun problème :o)
Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
se trie en moins d'une seconde... Tu peux aussi utiliser une variable
indicée, ou encore un fichier.tmp, y a aucun problème :o)
Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
le_troll wrote:
> Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
> se trie en moins d'une seconde... Tu peux aussi utiliser une variable
> indicée, ou encore un fichier.tmp, y a aucun problème :o)
> Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
> dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Voila à peu près à quoi ressemble mon code. Sauf que pas de chance, il y
a un petit problème dans l'ordre alpha car l'élément ajouté conserve la
place de l'ancien élément remplacé. Bizarrement, tout ce passe bien au
niveau de mon appli pourtant et je n'arrive pas à trouver d'où ça vient
dans le bout de code que je donne ici :
Sur une form mettre 5 contrôles :
- 1 TextBox nommé : Text1
- 1 litbox nommée : releve
- 1 listbox nommée : releve2
- 1 checkbox nommé Check1
- 1 bouton nommé save2
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 1 Then
releve2.Visible = True
releve.Visible = False
Else
releve2.Visible = False
releve.Visible = True
End If
End Sub
Private Sub Form_Load()
releve.AddItem "France"
releve.AddItem "Belgique"
releve.AddItem "Luxembourg"
releve.AddItem "Suède"
releve.AddItem "Paxs Bas"
releve2.AddItem "France"
releve2.AddItem "Belgique"
releve2.AddItem "Luxembourg"
releve2.AddItem "Suède"
releve2.AddItem "Paxs Bas"
releve2.Visible = False
releve.Left = 840
releve.Top = 1080
releve.Height = 1620
releve.Width = 3135
releve2.Left = 840
releve2.Top = 1080
releve2.Height = 1620
releve2.Width = 3135
Check1.Caption = "Tri alphabétique"
Text1.Text = "Italie"
End Sub
Private Sub save2_Click()
Dim strLigne As String
Dim p As Integer
strLigne = Text1.Text
'Modification d'enregistrement
If releve.Visible = True Then
For p = 0 To releve2.ListCount - 1
releve2.ListIndex = p
If releve.Text = releve2.Text Then
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
GoTo suite1
End If
Next p
suite1:
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
Else
For p = 0 To releve.ListCount - 1
releve.ListIndex = p
If releve2.Text = releve.Text Then
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
GoTo suite2
End If
Next p
suite2:
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
End If
End Sub
Ce qu'il faut faire :
1 - Mettre du texte dans le champ texte. J'ai mis par exemple Italie par
défaut. C'est le texte qui va remplacer celui choisi dans la liste
2 - Sélectionner dans la liste un pays (peu importe lequel) Ne pas
oublier de sélectionner une ligne sinon erreur (c'est pas le pb)
3 - Cliquer sur le bouton
Normalement ce qui doit se passer :
Le pays sélectionné est remplacé par "Italie" dans la liste.
Et si l'on trie par ordre alpha, Italie doit aussi apparaître. Le pb,
c'est qu'avec ce bout de code, il garde la place de l'ancien item. Je
n'ai plus le temps de regarder ce qui cloche mais sans doute pas grand
chose.
A+
--
Franck
le_troll wrote:
> Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
> se trie en moins d'une seconde... Tu peux aussi utiliser une variable
> indicée, ou encore un fichier.tmp, y a aucun problème :o)
> Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
> dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Voila à peu près à quoi ressemble mon code. Sauf que pas de chance, il y
a un petit problème dans l'ordre alpha car l'élément ajouté conserve la
place de l'ancien élément remplacé. Bizarrement, tout ce passe bien au
niveau de mon appli pourtant et je n'arrive pas à trouver d'où ça vient
dans le bout de code que je donne ici :
Sur une form mettre 5 contrôles :
- 1 TextBox nommé : Text1
- 1 litbox nommée : releve
- 1 listbox nommée : releve2
- 1 checkbox nommé Check1
- 1 bouton nommé save2
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 1 Then
releve2.Visible = True
releve.Visible = False
Else
releve2.Visible = False
releve.Visible = True
End If
End Sub
Private Sub Form_Load()
releve.AddItem "France"
releve.AddItem "Belgique"
releve.AddItem "Luxembourg"
releve.AddItem "Suède"
releve.AddItem "Paxs Bas"
releve2.AddItem "France"
releve2.AddItem "Belgique"
releve2.AddItem "Luxembourg"
releve2.AddItem "Suède"
releve2.AddItem "Paxs Bas"
releve2.Visible = False
releve.Left = 840
releve.Top = 1080
releve.Height = 1620
releve.Width = 3135
releve2.Left = 840
releve2.Top = 1080
releve2.Height = 1620
releve2.Width = 3135
Check1.Caption = "Tri alphabétique"
Text1.Text = "Italie"
End Sub
Private Sub save2_Click()
Dim strLigne As String
Dim p As Integer
strLigne = Text1.Text
'Modification d'enregistrement
If releve.Visible = True Then
For p = 0 To releve2.ListCount - 1
releve2.ListIndex = p
If releve.Text = releve2.Text Then
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
GoTo suite1
End If
Next p
suite1:
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
Else
For p = 0 To releve.ListCount - 1
releve.ListIndex = p
If releve2.Text = releve.Text Then
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
GoTo suite2
End If
Next p
suite2:
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
End If
End Sub
Ce qu'il faut faire :
1 - Mettre du texte dans le champ texte. J'ai mis par exemple Italie par
défaut. C'est le texte qui va remplacer celui choisi dans la liste
2 - Sélectionner dans la liste un pays (peu importe lequel) Ne pas
oublier de sélectionner une ligne sinon erreur (c'est pas le pb)
3 - Cliquer sur le bouton
Normalement ce qui doit se passer :
Le pays sélectionné est remplacé par "Italie" dans la liste.
Et si l'on trie par ordre alpha, Italie doit aussi apparaître. Le pb,
c'est qu'avec ce bout de code, il garde la place de l'ancien item. Je
n'ai plus le temps de regarder ce qui cloche mais sans doute pas grand
chose.
A+
--
Franck
le_troll wrote:
> Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
> se trie en moins d'une seconde... Tu peux aussi utiliser une variable
> indicée, ou encore un fichier.tmp, y a aucun problème :o)
> Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
> dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Voila à peu près à quoi ressemble mon code. Sauf que pas de chance, il y
a un petit problème dans l'ordre alpha car l'élément ajouté conserve la
place de l'ancien élément remplacé. Bizarrement, tout ce passe bien au
niveau de mon appli pourtant et je n'arrive pas à trouver d'où ça vient
dans le bout de code que je donne ici :
Sur une form mettre 5 contrôles :
- 1 TextBox nommé : Text1
- 1 litbox nommée : releve
- 1 listbox nommée : releve2
- 1 checkbox nommé Check1
- 1 bouton nommé save2
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 1 Then
releve2.Visible = True
releve.Visible = False
Else
releve2.Visible = False
releve.Visible = True
End If
End Sub
Private Sub Form_Load()
releve.AddItem "France"
releve.AddItem "Belgique"
releve.AddItem "Luxembourg"
releve.AddItem "Suède"
releve.AddItem "Paxs Bas"
releve2.AddItem "France"
releve2.AddItem "Belgique"
releve2.AddItem "Luxembourg"
releve2.AddItem "Suède"
releve2.AddItem "Paxs Bas"
releve2.Visible = False
releve.Left = 840
releve.Top = 1080
releve.Height = 1620
releve.Width = 3135
releve2.Left = 840
releve2.Top = 1080
releve2.Height = 1620
releve2.Width = 3135
Check1.Caption = "Tri alphabétique"
Text1.Text = "Italie"
End Sub
Private Sub save2_Click()
Dim strLigne As String
Dim p As Integer
strLigne = Text1.Text
'Modification d'enregistrement
If releve.Visible = True Then
For p = 0 To releve2.ListCount - 1
releve2.ListIndex = p
If releve.Text = releve2.Text Then
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
GoTo suite1
End If
Next p
suite1:
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
Else
For p = 0 To releve.ListCount - 1
releve.ListIndex = p
If releve2.Text = releve.Text Then
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
GoTo suite2
End If
Next p
suite2:
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
End If
End Sub
Ce qu'il faut faire :
1 - Mettre du texte dans le champ texte. J'ai mis par exemple Italie par
défaut. C'est le texte qui va remplacer celui choisi dans la liste
2 - Sélectionner dans la liste un pays (peu importe lequel) Ne pas
oublier de sélectionner une ligne sinon erreur (c'est pas le pb)
3 - Cliquer sur le bouton
Normalement ce qui doit se passer :
Le pays sélectionné est remplacé par "Italie" dans la liste.
Et si l'on trie par ordre alpha, Italie doit aussi apparaître. Le pb,
c'est qu'avec ce bout de code, il garde la place de l'ancien item. Je
n'ai plus le temps de regarder ce qui cloche mais sans doute pas grand
chose.
A+
--
Franck
le_troll wrote:
> Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
> se trie en moins d'une seconde... Tu peux aussi utiliser une variable
> indicée, ou encore un fichier.tmp, y a aucun problème :o)
> Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
> dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Voila à peu près à quoi ressemble mon code. Sauf que pas de chance, il y
a un petit problème dans l'ordre alpha car l'élément ajouté conserve la
place de l'ancien élément remplacé. Bizarrement, tout ce passe bien au
niveau de mon appli pourtant et je n'arrive pas à trouver d'où ça vient
dans le bout de code que je donne ici :
Sur une form mettre 5 contrôles :
- 1 TextBox nommé : Text1
- 1 litbox nommée : releve
- 1 listbox nommée : releve2
- 1 checkbox nommé Check1
- 1 bouton nommé save2
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 1 Then
releve2.Visible = True
releve.Visible = False
Else
releve2.Visible = False
releve.Visible = True
End If
End Sub
Private Sub Form_Load()
releve.AddItem "France"
releve.AddItem "Belgique"
releve.AddItem "Luxembourg"
releve.AddItem "Suède"
releve.AddItem "Paxs Bas"
releve2.AddItem "France"
releve2.AddItem "Belgique"
releve2.AddItem "Luxembourg"
releve2.AddItem "Suède"
releve2.AddItem "Paxs Bas"
releve2.Visible = False
releve.Left = 840
releve.Top = 1080
releve.Height = 1620
releve.Width = 3135
releve2.Left = 840
releve2.Top = 1080
releve2.Height = 1620
releve2.Width = 3135
Check1.Caption = "Tri alphabétique"
Text1.Text = "Italie"
End Sub
Private Sub save2_Click()
Dim strLigne As String
Dim p As Integer
strLigne = Text1.Text
'Modification d'enregistrement
If releve.Visible = True Then
For p = 0 To releve2.ListCount - 1
releve2.ListIndex = p
If releve.Text = releve2.Text Then
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
GoTo suite1
End If
Next p
suite1:
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
Else
For p = 0 To releve.ListCount - 1
releve.ListIndex = p
If releve2.Text = releve.Text Then
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
GoTo suite2
End If
Next p
suite2:
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
End If
End Sub
Ce qu'il faut faire :
1 - Mettre du texte dans le champ texte. J'ai mis par exemple Italie par
défaut. C'est le texte qui va remplacer celui choisi dans la liste
2 - Sélectionner dans la liste un pays (peu importe lequel) Ne pas
oublier de sélectionner une ligne sinon erreur (c'est pas le pb)
3 - Cliquer sur le bouton
Normalement ce qui doit se passer :
Le pays sélectionné est remplacé par "Italie" dans la liste.
Et si l'on trie par ordre alpha, Italie doit aussi apparaître. Le pb,
c'est qu'avec ce bout de code, il garde la place de l'ancien item. Je
n'ai plus le temps de regarder ce qui cloche mais sans doute pas grand
chose.
A+
--
Franck
le_troll wrote:
> Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
> se trie en moins d'une seconde... Tu peux aussi utiliser une variable
> indicée, ou encore un fichier.tmp, y a aucun problème :o)
> Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
> dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Voila à peu près à quoi ressemble mon code. Sauf que pas de chance, il y
a un petit problème dans l'ordre alpha car l'élément ajouté conserve la
place de l'ancien élément remplacé. Bizarrement, tout ce passe bien au
niveau de mon appli pourtant et je n'arrive pas à trouver d'où ça vient
dans le bout de code que je donne ici :
Sur une form mettre 5 contrôles :
- 1 TextBox nommé : Text1
- 1 litbox nommée : releve
- 1 listbox nommée : releve2
- 1 checkbox nommé Check1
- 1 bouton nommé save2
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 1 Then
releve2.Visible = True
releve.Visible = False
Else
releve2.Visible = False
releve.Visible = True
End If
End Sub
Private Sub Form_Load()
releve.AddItem "France"
releve.AddItem "Belgique"
releve.AddItem "Luxembourg"
releve.AddItem "Suède"
releve.AddItem "Paxs Bas"
releve2.AddItem "France"
releve2.AddItem "Belgique"
releve2.AddItem "Luxembourg"
releve2.AddItem "Suède"
releve2.AddItem "Paxs Bas"
releve2.Visible = False
releve.Left = 840
releve.Top = 1080
releve.Height = 1620
releve.Width = 3135
releve2.Left = 840
releve2.Top = 1080
releve2.Height = 1620
releve2.Width = 3135
Check1.Caption = "Tri alphabétique"
Text1.Text = "Italie"
End Sub
Private Sub save2_Click()
Dim strLigne As String
Dim p As Integer
strLigne = Text1.Text
'Modification d'enregistrement
If releve.Visible = True Then
For p = 0 To releve2.ListCount - 1
releve2.ListIndex = p
If releve.Text = releve2.Text Then
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
GoTo suite1
End If
Next p
suite1:
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
Else
For p = 0 To releve.ListCount - 1
releve.ListIndex = p
If releve2.Text = releve.Text Then
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
GoTo suite2
End If
Next p
suite2:
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
End If
End Sub
Ce qu'il faut faire :
1 - Mettre du texte dans le champ texte. J'ai mis par exemple Italie par
défaut. C'est le texte qui va remplacer celui choisi dans la liste
2 - Sélectionner dans la liste un pays (peu importe lequel) Ne pas
oublier de sélectionner une ligne sinon erreur (c'est pas le pb)
3 - Cliquer sur le bouton
Normalement ce qui doit se passer :
Le pays sélectionné est remplacé par "Italie" dans la liste.
Et si l'on trie par ordre alpha, Italie doit aussi apparaître. Le pb,
c'est qu'avec ce bout de code, il garde la place de l'ancien item. Je
n'ai plus le temps de regarder ce qui cloche mais sans doute pas grand
chose.
A+
--
Franck
le_troll wrote:
> Ah, 2, 3000 enregistrements, sauf si la longueur est importante, ça
> se trie en moins d'une seconde... Tu peux aussi utiliser une variable
> indicée, ou encore un fichier.tmp, y a aucun problème :o)
> Heu, idée, tu peux présenter deux listes, l'une trié alpha et l'autre
> dans l'ordre de sortie, avec des label indiquant "quoi que c'est"...
Voila à peu près à quoi ressemble mon code. Sauf que pas de chance, il y
a un petit problème dans l'ordre alpha car l'élément ajouté conserve la
place de l'ancien élément remplacé. Bizarrement, tout ce passe bien au
niveau de mon appli pourtant et je n'arrive pas à trouver d'où ça vient
dans le bout de code que je donne ici :
Sur une form mettre 5 contrôles :
- 1 TextBox nommé : Text1
- 1 litbox nommée : releve
- 1 listbox nommée : releve2
- 1 checkbox nommé Check1
- 1 bouton nommé save2
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 1 Then
releve2.Visible = True
releve.Visible = False
Else
releve2.Visible = False
releve.Visible = True
End If
End Sub
Private Sub Form_Load()
releve.AddItem "France"
releve.AddItem "Belgique"
releve.AddItem "Luxembourg"
releve.AddItem "Suède"
releve.AddItem "Paxs Bas"
releve2.AddItem "France"
releve2.AddItem "Belgique"
releve2.AddItem "Luxembourg"
releve2.AddItem "Suède"
releve2.AddItem "Paxs Bas"
releve2.Visible = False
releve.Left = 840
releve.Top = 1080
releve.Height = 1620
releve.Width = 3135
releve2.Left = 840
releve2.Top = 1080
releve2.Height = 1620
releve2.Width = 3135
Check1.Caption = "Tri alphabétique"
Text1.Text = "Italie"
End Sub
Private Sub save2_Click()
Dim strLigne As String
Dim p As Integer
strLigne = Text1.Text
'Modification d'enregistrement
If releve.Visible = True Then
For p = 0 To releve2.ListCount - 1
releve2.ListIndex = p
If releve.Text = releve2.Text Then
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
GoTo suite1
End If
Next p
suite1:
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
Else
For p = 0 To releve.ListCount - 1
releve.ListIndex = p
If releve2.Text = releve.Text Then
releve.AddItem strLigne, releve.ListIndex
releve.RemoveItem releve.ListIndex
GoTo suite2
End If
Next p
suite2:
releve2.AddItem strLigne, releve2.ListIndex
releve2.RemoveItem releve2.ListIndex
End If
End Sub
Ce qu'il faut faire :
1 - Mettre du texte dans le champ texte. J'ai mis par exemple Italie par
défaut. C'est le texte qui va remplacer celui choisi dans la liste
2 - Sélectionner dans la liste un pays (peu importe lequel) Ne pas
oublier de sélectionner une ligne sinon erreur (c'est pas le pb)
3 - Cliquer sur le bouton
Normalement ce qui doit se passer :
Le pays sélectionné est remplacé par "Italie" dans la liste.
Et si l'on trie par ordre alpha, Italie doit aussi apparaître. Le pb,
c'est qu'avec ce bout de code, il garde la place de l'ancien item. Je
n'ai plus le temps de regarder ce qui cloche mais sans doute pas grand
chose.
A+
--
Franck
' programme ??? : form 1
'
' Remplace un objet sélectionné d'une liste par une saisie de texte
' en présentant la liste, soit en vrac, soit tiée alphanumériquement
'
' OBJETS
' form1.Activate() '''à cause du setfocus(text1)
' list1 visible=true, sortedúlse : liste de choix
' list2 visibleúlse, sorted=true : double trié
' list3 visibleúlse, sortedúlse : double non trié
' check1 caption = "tri" : choix trié/vrac
' commandbutton1 caption = "ok" : validation
'
Option Explicit
Dim i As Integer
'
Sub Form_Activate()
List1.Clear
List1.AddItem UCase("france")
List1.AddItem UCase("belgique")
List1.AddItem UCase("luxembourg")
List1.AddItem UCase("suède")
List1.AddItem UCase("pays Bas")
Call charge_listes
End Sub
Sub charge_listes()
If List1.ListCount < 1 Then Exit Sub
List2.Clear
List3.Clear
For i = 0 To List1.ListCount - 1 ' copie non triée L1->L3
List3.AddItem List1.List(i)
List2.AddItem List1.List(i)
Next i
Call Check1_Click
Text1 = ""
End Sub
Sub Command1_Click() 'ok
Text1 = Trim(Text1)
If Len(Text1) < 2 Or List1.ListIndex < 0 Or List1.ListCount < 1 Then
Text1.SetFocus
Exit Sub
End If
'
Text1 = UCase(Text1)
i = List1.ListIndex
List1.AddItem Text1, i
List1.Refresh
List1.RemoveItem i + 1
List1.Refresh
Call charge_listes
End Sub
Sub Check1_Click()
If List1.ListCount < 1 Then Exit Sub
If Check1.Value = 0 Then
List1.Clear
For i = 0 To List3.ListCount - 1
List1.AddItem List3.List(i)
Next i
Text1.SetFocus
Exit Sub
End If
'
If Check1.Value = 1 Then
List1.Clear
For i = 0 To List2.ListCount - 1
List1.AddItem List2.List(i)
Next i
Text1.SetFocus
Exit Sub
End If
End Sub
' programme ??? : form 1
'
' Remplace un objet sélectionné d'une liste par une saisie de texte
' en présentant la liste, soit en vrac, soit tiée alphanumériquement
'
' OBJETS
' form1.Activate() '''à cause du setfocus(text1)
' list1 visible=true, sortedúlse : liste de choix
' list2 visibleúlse, sorted=true : double trié
' list3 visibleúlse, sortedúlse : double non trié
' check1 caption = "tri" : choix trié/vrac
' commandbutton1 caption = "ok" : validation
'
Option Explicit
Dim i As Integer
'
Sub Form_Activate()
List1.Clear
List1.AddItem UCase("france")
List1.AddItem UCase("belgique")
List1.AddItem UCase("luxembourg")
List1.AddItem UCase("suède")
List1.AddItem UCase("pays Bas")
Call charge_listes
End Sub
Sub charge_listes()
If List1.ListCount < 1 Then Exit Sub
List2.Clear
List3.Clear
For i = 0 To List1.ListCount - 1 ' copie non triée L1->L3
List3.AddItem List1.List(i)
List2.AddItem List1.List(i)
Next i
Call Check1_Click
Text1 = ""
End Sub
Sub Command1_Click() 'ok
Text1 = Trim(Text1)
If Len(Text1) < 2 Or List1.ListIndex < 0 Or List1.ListCount < 1 Then
Text1.SetFocus
Exit Sub
End If
'
Text1 = UCase(Text1)
i = List1.ListIndex
List1.AddItem Text1, i
List1.Refresh
List1.RemoveItem i + 1
List1.Refresh
Call charge_listes
End Sub
Sub Check1_Click()
If List1.ListCount < 1 Then Exit Sub
If Check1.Value = 0 Then
List1.Clear
For i = 0 To List3.ListCount - 1
List1.AddItem List3.List(i)
Next i
Text1.SetFocus
Exit Sub
End If
'
If Check1.Value = 1 Then
List1.Clear
For i = 0 To List2.ListCount - 1
List1.AddItem List2.List(i)
Next i
Text1.SetFocus
Exit Sub
End If
End Sub
' programme ??? : form 1
'
' Remplace un objet sélectionné d'une liste par une saisie de texte
' en présentant la liste, soit en vrac, soit tiée alphanumériquement
'
' OBJETS
' form1.Activate() '''à cause du setfocus(text1)
' list1 visible=true, sortedúlse : liste de choix
' list2 visibleúlse, sorted=true : double trié
' list3 visibleúlse, sortedúlse : double non trié
' check1 caption = "tri" : choix trié/vrac
' commandbutton1 caption = "ok" : validation
'
Option Explicit
Dim i As Integer
'
Sub Form_Activate()
List1.Clear
List1.AddItem UCase("france")
List1.AddItem UCase("belgique")
List1.AddItem UCase("luxembourg")
List1.AddItem UCase("suède")
List1.AddItem UCase("pays Bas")
Call charge_listes
End Sub
Sub charge_listes()
If List1.ListCount < 1 Then Exit Sub
List2.Clear
List3.Clear
For i = 0 To List1.ListCount - 1 ' copie non triée L1->L3
List3.AddItem List1.List(i)
List2.AddItem List1.List(i)
Next i
Call Check1_Click
Text1 = ""
End Sub
Sub Command1_Click() 'ok
Text1 = Trim(Text1)
If Len(Text1) < 2 Or List1.ListIndex < 0 Or List1.ListCount < 1 Then
Text1.SetFocus
Exit Sub
End If
'
Text1 = UCase(Text1)
i = List1.ListIndex
List1.AddItem Text1, i
List1.Refresh
List1.RemoveItem i + 1
List1.Refresh
Call charge_listes
End Sub
Sub Check1_Click()
If List1.ListCount < 1 Then Exit Sub
If Check1.Value = 0 Then
List1.Clear
For i = 0 To List3.ListCount - 1
List1.AddItem List3.List(i)
Next i
Text1.SetFocus
Exit Sub
End If
'
If Check1.Value = 1 Then
List1.Clear
For i = 0 To List2.ListCount - 1
List1.AddItem List2.List(i)
Next i
Text1.SetFocus
Exit Sub
End If
End Sub
le_troll wrote:
> ' programme ??? : form 1
> '
>
> ' Remplace un objet sélectionné d'une liste par une saisie de texte
> ' en présentant la liste, soit en vrac, soit tiée alphanumériquement
> '
>
> ' OBJETS
> ' form1.Activate() '''à cause du setfocus(text1)
> ' list1 visible=true, sortedúlse : liste de choix
> ' list2 visibleúlse, sorted=true : double trié
> ' list3 visibleúlse, sortedúlse : double non trié
> ' check1 caption = "tri" : choix trié/vrac
> ' commandbutton1 caption = "ok" : validation
> '
>
> Option Explicit
> Dim i As Integer
> '
>
>
> Sub Form_Activate()
> List1.Clear
> List1.AddItem UCase("france")
> List1.AddItem UCase("belgique")
> List1.AddItem UCase("luxembourg")
> List1.AddItem UCase("suède")
> List1.AddItem UCase("pays Bas")
> Call charge_listes
> End Sub
>
>
> Sub charge_listes()
> If List1.ListCount < 1 Then Exit Sub
> List2.Clear
> List3.Clear
> For i = 0 To List1.ListCount - 1 ' copie non triée L1->L3
> List3.AddItem List1.List(i)
> List2.AddItem List1.List(i)
> Next i
> Call Check1_Click
> Text1 = ""
> End Sub
>
>
> Sub Command1_Click() 'ok
> Text1 = Trim(Text1)
> If Len(Text1) < 2 Or List1.ListIndex < 0 Or List1.ListCount < 1 Then
> Text1.SetFocus
> Exit Sub
> End If
> '
> Text1 = UCase(Text1)
> i = List1.ListIndex
> List1.AddItem Text1, i
> List1.Refresh
> List1.RemoveItem i + 1
> List1.Refresh
> Call charge_listes
> End Sub
>
>
> Sub Check1_Click()
> If List1.ListCount < 1 Then Exit Sub
> If Check1.Value = 0 Then
> List1.Clear
> For i = 0 To List3.ListCount - 1
> List1.AddItem List3.List(i)
> Next i
> Text1.SetFocus
> Exit Sub
> End If
> '
> If Check1.Value = 1 Then
> List1.Clear
> For i = 0 To List2.ListCount - 1
> List1.AddItem List2.List(i)
> Next i
> Text1.SetFocus
> Exit Sub
> End If
> End Sub
Bonjour, merci beaucoup pour ces quelques lignes. C'est clair, c'est
net. J'ai testé et ça fonctionne très bien.
Vous pourrez voir ce que ça donne concrètement lorsque l'appli sera
disponible et téléchargeable sur Internet.
Mais tout n'est pas fini, j'ai un autre petit souci qui me tracasse et
je pense réouvrir un fil d'ici peu de temps .;-)
Merci à tous
--
Franck
le_troll wrote:
> ' programme ??? : form 1
> '
>
> ' Remplace un objet sélectionné d'une liste par une saisie de texte
> ' en présentant la liste, soit en vrac, soit tiée alphanumériquement
> '
>
> ' OBJETS
> ' form1.Activate() '''à cause du setfocus(text1)
> ' list1 visible=true, sortedúlse : liste de choix
> ' list2 visibleúlse, sorted=true : double trié
> ' list3 visibleúlse, sortedúlse : double non trié
> ' check1 caption = "tri" : choix trié/vrac
> ' commandbutton1 caption = "ok" : validation
> '
>
> Option Explicit
> Dim i As Integer
> '
>
>
> Sub Form_Activate()
> List1.Clear
> List1.AddItem UCase("france")
> List1.AddItem UCase("belgique")
> List1.AddItem UCase("luxembourg")
> List1.AddItem UCase("suède")
> List1.AddItem UCase("pays Bas")
> Call charge_listes
> End Sub
>
>
> Sub charge_listes()
> If List1.ListCount < 1 Then Exit Sub
> List2.Clear
> List3.Clear
> For i = 0 To List1.ListCount - 1 ' copie non triée L1->L3
> List3.AddItem List1.List(i)
> List2.AddItem List1.List(i)
> Next i
> Call Check1_Click
> Text1 = ""
> End Sub
>
>
> Sub Command1_Click() 'ok
> Text1 = Trim(Text1)
> If Len(Text1) < 2 Or List1.ListIndex < 0 Or List1.ListCount < 1 Then
> Text1.SetFocus
> Exit Sub
> End If
> '
> Text1 = UCase(Text1)
> i = List1.ListIndex
> List1.AddItem Text1, i
> List1.Refresh
> List1.RemoveItem i + 1
> List1.Refresh
> Call charge_listes
> End Sub
>
>
> Sub Check1_Click()
> If List1.ListCount < 1 Then Exit Sub
> If Check1.Value = 0 Then
> List1.Clear
> For i = 0 To List3.ListCount - 1
> List1.AddItem List3.List(i)
> Next i
> Text1.SetFocus
> Exit Sub
> End If
> '
> If Check1.Value = 1 Then
> List1.Clear
> For i = 0 To List2.ListCount - 1
> List1.AddItem List2.List(i)
> Next i
> Text1.SetFocus
> Exit Sub
> End If
> End Sub
Bonjour, merci beaucoup pour ces quelques lignes. C'est clair, c'est
net. J'ai testé et ça fonctionne très bien.
Vous pourrez voir ce que ça donne concrètement lorsque l'appli sera
disponible et téléchargeable sur Internet.
Mais tout n'est pas fini, j'ai un autre petit souci qui me tracasse et
je pense réouvrir un fil d'ici peu de temps .;-)
Merci à tous
--
Franck
le_troll wrote:
> ' programme ??? : form 1
> '
>
> ' Remplace un objet sélectionné d'une liste par une saisie de texte
> ' en présentant la liste, soit en vrac, soit tiée alphanumériquement
> '
>
> ' OBJETS
> ' form1.Activate() '''à cause du setfocus(text1)
> ' list1 visible=true, sortedúlse : liste de choix
> ' list2 visibleúlse, sorted=true : double trié
> ' list3 visibleúlse, sortedúlse : double non trié
> ' check1 caption = "tri" : choix trié/vrac
> ' commandbutton1 caption = "ok" : validation
> '
>
> Option Explicit
> Dim i As Integer
> '
>
>
> Sub Form_Activate()
> List1.Clear
> List1.AddItem UCase("france")
> List1.AddItem UCase("belgique")
> List1.AddItem UCase("luxembourg")
> List1.AddItem UCase("suède")
> List1.AddItem UCase("pays Bas")
> Call charge_listes
> End Sub
>
>
> Sub charge_listes()
> If List1.ListCount < 1 Then Exit Sub
> List2.Clear
> List3.Clear
> For i = 0 To List1.ListCount - 1 ' copie non triée L1->L3
> List3.AddItem List1.List(i)
> List2.AddItem List1.List(i)
> Next i
> Call Check1_Click
> Text1 = ""
> End Sub
>
>
> Sub Command1_Click() 'ok
> Text1 = Trim(Text1)
> If Len(Text1) < 2 Or List1.ListIndex < 0 Or List1.ListCount < 1 Then
> Text1.SetFocus
> Exit Sub
> End If
> '
> Text1 = UCase(Text1)
> i = List1.ListIndex
> List1.AddItem Text1, i
> List1.Refresh
> List1.RemoveItem i + 1
> List1.Refresh
> Call charge_listes
> End Sub
>
>
> Sub Check1_Click()
> If List1.ListCount < 1 Then Exit Sub
> If Check1.Value = 0 Then
> List1.Clear
> For i = 0 To List3.ListCount - 1
> List1.AddItem List3.List(i)
> Next i
> Text1.SetFocus
> Exit Sub
> End If
> '
> If Check1.Value = 1 Then
> List1.Clear
> For i = 0 To List2.ListCount - 1
> List1.AddItem List2.List(i)
> Next i
> Text1.SetFocus
> Exit Sub
> End If
> End Sub
Bonjour, merci beaucoup pour ces quelques lignes. C'est clair, c'est
net. J'ai testé et ça fonctionne très bien.
Vous pourrez voir ce que ça donne concrètement lorsque l'appli sera
disponible et téléchargeable sur Internet.
Mais tout n'est pas fini, j'ai un autre petit souci qui me tracasse et
je pense réouvrir un fil d'ici peu de temps .;-)
Merci à tous
--
Franck
Salut, si je peux t'aider :o) ...
Salut, si je peux t'aider :o) ...
Salut, si je peux t'aider :o) ...