OVH Cloud OVH Cloud

Enlever des valeurs d’un combobox.

14 réponses
Avatar
StDonat
Bonjour, J’ai un combobox avec un certain nombre de valeurs(supposons une
liste de prénoms). Je souhaiterais pouvoir retirer de cette liste « Georges »
ou « Philippe ». Rassurez-vous je n’ai rien contre ces 2 prénoms là, c’est
juste pour l’exemple !!
Merci de votre aide.

4 réponses

1 2
Avatar
LE TROLL
' exp chage combo form1
Option Explicit

Sub Form_Load()
Combo1.Clear
Combo1.AddItem "un"
Combo1.AddItem "deux"
Combo1.AddItem "georges"
Combo1.AddItem "trois"
Combo1.AddItem "philippe"
Combo1.AddItem "quatre"
Combo1.ListIndex = 0
End Sub

Sub Command1_Click() ' supprime
Dim supprime(2) As String
Dim i As Long
Dim j As Long
If Combo1.ListCount < 1 Then Exit Sub
supprime(0) = "georges"
supprime(1) = "philippe"
For i = Combo1.ListCount - 1 To 0 Step -1
For j = 0 To 1
If supprime(j) = Combo1.List(i) Then Combo1.RemoveItem i
Next j
Next i
Combo1.Refresh
If Combo1.ListCount > 0 Then Combo1.ListIndex = 0
End Sub




------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"StDonat" a écrit dans le message de
news:
| Merci, mais tu etre un peu plus précis, sur :
| Faire evoluer l'indice ?
| Ta solution me semble bonne , mais je ne comprends pas pourquoi elle ne
| fonctionne pas ?
|
| "LE TROLL" wrote:
|
| > Bonjour,
| >
| > Tu as tout à fait raison, j'ai fait ça de tête à main levée, en
effet,
| > il aut faire évoluer l'indice, merci ;o)
| >
| > --
| > Merci beaucoup, au revoir et à bientôt :o)
| > ------
| > Romans, logiciels, email, site personnel
| > http://irolog.free.fr/joe.htm
|
> ------------------------------------------------------------------------------------
| > "StDonat" a écrit dans le message de
| > news:
| > | il y a 2 trucs que je ne pige pas!
| > | A Quoi sert la boucle I ?
| > | Conbo1.Text a toujours la meme valeur
| > |
| > |
| > | "LE TROLL" wrote:
| > |
| > | > Salut, voici chef :
| > | >
| > | > dim lindex as long
| > | > combo1.RemoveItem lindex
| > | >
| > | > Si "dupont" est à l'index 10, ben tu files = lindex = 10, mais
tu
| > peux
| > | > écrire en dur (à éviter), ne pas oublier que ça part de 0, considéré
| > comme
| > | > le 1er positif...
| > | >
| > | > Lais arthung, si tu en enlève plusieurs, par cette méthode ça
plante
| > car
| > | > en en ôtant un, tu changes les index supérieur à celui enlevé, si tu
me
| > | > suis, tu les réduis d'un dans ce cas, alors ça impliquerait qu'il
faille
| > | > faire un Combi1.Refresh, et que tu récupère de nouveau l'index
souvent,
| > | > alors, pour ne pas avoir se désagrément, il faut partir d'en bas, en
| > | > remontant, ainsi, tout ce que tu supprime est changé derrière ton
| > pointeur,
| > | > tu t'en moques, voici un exemple complet, ça fera 2 ? :
| > | >
| > | > dim lindex as long
| > | > dim i as long
| > | > dim lesNoms as string(2)
| > | > lesNoms(0) = "georges"
| > | > lesNoms(1) = "Philippe"
| > | > for i = combo1.listcount-1 to 0 step -1
| > | > for j = 0 to 1
| > | > if leNom(j) = combo1.text then
| > | > lindex = combo1.listindex
| > | > combo1.removeitem lindex
| > | > endif
| > | > next j
| > | > next i
| > | > combo1.refresh
| > | > if combo1.listcount = >0 then combo1.listindex = ' ' ' ta
position
| > | > d'affichage
| > | >
| > | > est-ce clair ???
| > | > --
| > | > Merci beaucoup, au revoir et à bientôt :o)
| > | > ------
| > | > Romans, logiciels, email, site personnel
| > | > http://irolog.free.fr/joe.htm
| > |
| >
> ------------------------------------------------------------------------------------
| > | > "StDonat" a écrit dans le
message de
| > | > news:
| > | > | Bonjour, J'ai un combobox avec un certain nombre de
valeurs(supposons
| > une
| > | > | liste de prénoms). Je souhaiterais pouvoir retirer de cette liste
«
| > | > Georges »
| > | > | ou « Philippe ». Rassurez-vous je n'ai rien contre ces 2 prénoms
là,
| > c'est
| > | > | juste pour l'exemple !!
| > | > | Merci de votre aide.
| > | > |
| > | >
| > | >
| > | >
| >
| >
| >
Avatar
StDonat
Merci, C'est nickel ainsi!
J'ai "pinayer" a cause de l'aide de la proprieté Text d'un combobox qui
devrait me donner le listindex mais cela ne marche qu'avec le combobox actif
et moi je fais cela dans l'init!
Merci pour ta persévérance

"LE TROLL" wrote:

' exp chage combo form1
Option Explicit

Sub Form_Load()
Combo1.Clear
Combo1.AddItem "un"
Combo1.AddItem "deux"
Combo1.AddItem "georges"
Combo1.AddItem "trois"
Combo1.AddItem "philippe"
Combo1.AddItem "quatre"
Combo1.ListIndex = 0
End Sub

Sub Command1_Click() ' supprime
Dim supprime(2) As String
Dim i As Long
Dim j As Long
If Combo1.ListCount < 1 Then Exit Sub
supprime(0) = "georges"
supprime(1) = "philippe"
For i = Combo1.ListCount - 1 To 0 Step -1
For j = 0 To 1
If supprime(j) = Combo1.List(i) Then Combo1.RemoveItem i
Next j
Next i
Combo1.Refresh
If Combo1.ListCount > 0 Then Combo1.ListIndex = 0
End Sub




------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"StDonat" a écrit dans le message de
news:
| Merci, mais tu etre un peu plus précis, sur :
| Faire evoluer l'indice ?
| Ta solution me semble bonne , mais je ne comprends pas pourquoi elle ne
| fonctionne pas ?
|
| "LE TROLL" wrote:
|
| > Bonjour,
| >
| > Tu as tout à fait raison, j'ai fait ça de tête à main levée, en
effet,
| > il aut faire évoluer l'indice, merci ;o)
| >
| > --
| > Merci beaucoup, au revoir et à bientôt :o)
| > ------
| > Romans, logiciels, email, site personnel
| > http://irolog.free.fr/joe.htm
|
> ------------------------------------------------------------------------------------
| > "StDonat" a écrit dans le message de
| > news:
| > | il y a 2 trucs que je ne pige pas!
| > | A Quoi sert la boucle I ?
| > | Conbo1.Text a toujours la meme valeur
| > |
| > |
| > | "LE TROLL" wrote:
| > |
| > | > Salut, voici chef :
| > | >
| > | > dim lindex as long
| > | > combo1.RemoveItem lindex
| > | >
| > | > Si "dupont" est à l'index 10, ben tu files = lindex = 10, mais
tu
| > peux
| > | > écrire en dur (à éviter), ne pas oublier que ça part de 0, considéré
| > comme
| > | > le 1er positif...
| > | >
| > | > Lais arthung, si tu en enlève plusieurs, par cette méthode ça
plante
| > car
| > | > en en ôtant un, tu changes les index supérieur à celui enlevé, si tu
me
| > | > suis, tu les réduis d'un dans ce cas, alors ça impliquerait qu'il
faille
| > | > faire un Combi1.Refresh, et que tu récupère de nouveau l'index
souvent,
| > | > alors, pour ne pas avoir se désagrément, il faut partir d'en bas, en
| > | > remontant, ainsi, tout ce que tu supprime est changé derrière ton
| > pointeur,
| > | > tu t'en moques, voici un exemple complet, ça fera 2 ? :
| > | >
| > | > dim lindex as long
| > | > dim i as long
| > | > dim lesNoms as string(2)
| > | > lesNoms(0) = "georges"
| > | > lesNoms(1) = "Philippe"
| > | > for i = combo1.listcount-1 to 0 step -1
| > | > for j = 0 to 1
| > | > if leNom(j) = combo1.text then
| > | > lindex = combo1.listindex
| > | > combo1.removeitem lindex
| > | > endif
| > | > next j
| > | > next i
| > | > combo1.refresh
| > | > if combo1.listcount = >0 then combo1.listindex = ' ' ' ta
position
| > | > d'affichage
| > | >
| > | > est-ce clair ???
| > | > --
| > | > Merci beaucoup, au revoir et à bientôt :o)
| > | > ------
| > | > Romans, logiciels, email, site personnel
| > | > http://irolog.free.fr/joe.htm
| > |
| >
> ------------------------------------------------------------------------------------
| > | > "StDonat" a écrit dans le
message de
| > | > news:
| > | > | Bonjour, J'ai un combobox avec un certain nombre de
valeurs(supposons
| > une
| > | > | liste de prénoms). Je souhaiterais pouvoir retirer de cette liste
«
| > | > Georges »
| > | > | ou « Philippe ». Rassurez-vous je n'ai rien contre ces 2 prénoms
là,
| > c'est
| > | > | juste pour l'exemple !!
| > | > | Merci de votre aide.
| > | > |
| > | >
| > | >
| > | >
| >
| >
| >





Avatar
LSteph
Bonjour,

Tu n'as qu'à tester ca marche impec avec un array pour enlever les
valeurs indiquées en Case.


Maintenant si tu veux absolument utiliser Removeitem .... c'est ton choix.

@+

--
lSteph

StDonat a écrit :
Merci mais ce que je cherche c'est d'enlever des valeurs, avec removeitem il
me semble, et je ne vois rien de cela dans ta solution ?

"LSteph" wrote:

bonjour,

(comme je ne sais quelle recette a cuisiné "SansDoublos" et "ou")

voici un exemple plus standard partant d'un array et rebouclant dessus
pour filtrer

Private Sub UserForm_Initialize()
Dim myArr(), i as long
myArr = Array("toto", "Georges", "titi", "Philippe", "Mgr")
ComboBox1.Clear
For i = 0 To UBound(myArr)
Select Case LCase(myArr(i))
Case "georges", "philippe"
Case Else
ComboBox1.AddItem myArr(i)
End Select
Next
End Sub

'lSteph

StDonat a écrit :
Merci pour le début de réponse.
Il s'agit d'un cbx dans un userform et je lui affecte la sourcepar:
Combobox.list=SansDoublonsTrié(F1.Range(ou & "3:" & ou &
F1.Range("B65536").End(xlUp).Row))
donc par array....

"LSteph" wrote:

Bonjour,

c'est selon comment tu obtiens sa source

rowsource, array, boucle... ??
faut repasser la moulinette en filtrant avec if ou select case par
exemple, ou modifier la source...

(..aussi userform ou feuille?)

Cordialement.

--
lSteph

StDonat a écrit :
Bonjour, J’ai un combobox avec un certain nombre de valeurs(supposons une
liste de prénoms). Je souhaiterais pouvoir retirer de cette liste « Georges »
ou « Philippe ». Rassurez-vous je n’ai rien contre ces 2 prénoms là, c’est
juste pour l’exemple !!
Merci de votre aide.











Avatar
LE TROLL
Ah, mais si tu fais ça lors de l'initialisation, il faut que l'objet accepte
ce mode d'exploitation pour la propriété que tu sollicites, et aussi que
l'objet ait déjà ses datas (le combo)...
A ce moment, tu le fais dans "Activate" si ça existe en vbA, au lieu de le
faire dans le "Load", et pour ne le faire qu'au lancement, on met une
variable qui permet un seul accès :

dim premier as boolean
sub Load...
premier = true
end sub
sub activate...
if not premier then exit sub
premier = false
chargement de ton combo
end sub

Sinon, envoies un mail car je ne reste pas toujours dans ce groupe vbA
(montmartre75018) chez free...

Cordialement.

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"StDonat" a écrit dans le message de
news:
| Merci, C'est nickel ainsi!
| J'ai "pinayer" a cause de l'aide de la proprieté Text d'un combobox qui
| devrait me donner le listindex mais cela ne marche qu'avec le combobox
actif
| et moi je fais cela dans l'init!
| Merci pour ta persévérance
|
| "LE TROLL" wrote:
|
| > ' exp chage combo form1
| > Option Explicit
| >
| > Sub Form_Load()
| > Combo1.Clear
| > Combo1.AddItem "un"
| > Combo1.AddItem "deux"
| > Combo1.AddItem "georges"
| > Combo1.AddItem "trois"
| > Combo1.AddItem "philippe"
| > Combo1.AddItem "quatre"
| > Combo1.ListIndex = 0
| > End Sub
| >
| > Sub Command1_Click() ' supprime
| > Dim supprime(2) As String
| > Dim i As Long
| > Dim j As Long
| > If Combo1.ListCount < 1 Then Exit Sub
| > supprime(0) = "georges"
| > supprime(1) = "philippe"
| > For i = Combo1.ListCount - 1 To 0 Step -1
| > For j = 0 To 1
| > If supprime(j) = Combo1.List(i) Then Combo1.RemoveItem i
| > Next j
| > Next i
| > Combo1.Refresh
| > If Combo1.ListCount > 0 Then Combo1.ListIndex = 0
| > End Sub
| >
| >
| >
| >
| > ------
| > Romans, logiciels, email, site personnel
| > http://irolog.free.fr/joe.htm
|
> ------------------------------------------------------------------------------------
| > "StDonat" a écrit dans le message de
| > news:
| > | Merci, mais tu etre un peu plus précis, sur :
| > | Faire evoluer l'indice ?
| > | Ta solution me semble bonne , mais je ne comprends pas pourquoi elle
ne
| > | fonctionne pas ?
| > |
| > | "LE TROLL" wrote:
| > |
| > | > Bonjour,
| > | >
| > | > Tu as tout à fait raison, j'ai fait ça de tête à main levée, en
| > effet,
| > | > il aut faire évoluer l'indice, merci ;o)
| > | >
| > | > --
| > | > Merci beaucoup, au revoir et à bientôt :o)
| > | > ------
| > | > Romans, logiciels, email, site personnel
| > | > http://irolog.free.fr/joe.htm
| > |
| >
> ------------------------------------------------------------------------------------
| > | > "StDonat" a écrit dans le
message de
| > | > news:
| > | > | il y a 2 trucs que je ne pige pas!
| > | > | A Quoi sert la boucle I ?
| > | > | Conbo1.Text a toujours la meme valeur
| > | > |
| > | > |
| > | > | "LE TROLL" wrote:
| > | > |
| > | > | > Salut, voici chef :
| > | > | >
| > | > | > dim lindex as long
| > | > | > combo1.RemoveItem lindex
| > | > | >
| > | > | > Si "dupont" est à l'index 10, ben tu files = lindex = 10,
mais
| > tu
| > | > peux
| > | > | > écrire en dur (à éviter), ne pas oublier que ça part de 0,
considéré
| > | > comme
| > | > | > le 1er positif...
| > | > | >
| > | > | > Lais arthung, si tu en enlève plusieurs, par cette méthode
ça
| > plante
| > | > car
| > | > | > en en ôtant un, tu changes les index supérieur à celui enlevé,
si tu
| > me
| > | > | > suis, tu les réduis d'un dans ce cas, alors ça impliquerait
qu'il
| > faille
| > | > | > faire un Combi1.Refresh, et que tu récupère de nouveau l'index
| > souvent,
| > | > | > alors, pour ne pas avoir se désagrément, il faut partir d'en
bas, en
| > | > | > remontant, ainsi, tout ce que tu supprime est changé derrière
ton
| > | > pointeur,
| > | > | > tu t'en moques, voici un exemple complet, ça fera 2 ? :
| > | > | >
| > | > | > dim lindex as long
| > | > | > dim i as long
| > | > | > dim lesNoms as string(2)
| > | > | > lesNoms(0) = "georges"
| > | > | > lesNoms(1) = "Philippe"
| > | > | > for i = combo1.listcount-1 to 0 step -1
| > | > | > for j = 0 to 1
| > | > | > if leNom(j) = combo1.text then
| > | > | > lindex = combo1.listindex
| > | > | > combo1.removeitem lindex
| > | > | > endif
| > | > | > next j
| > | > | > next i
| > | > | > combo1.refresh
| > | > | > if combo1.listcount = >0 then combo1.listindex = ' ' ' ta
| > position
| > | > | > d'affichage
| > | > | >
| > | > | > est-ce clair ???
| > | > | > --
| > | > | > Merci beaucoup, au revoir et à bientôt :o)
| > | > | > ------
| > | > | > Romans, logiciels, email, site personnel
| > | > | > http://irolog.free.fr/joe.htm
| > | > |
| > | >
| >
> ------------------------------------------------------------------------------------
| > | > | > "StDonat" a écrit dans le
| > message de
| > | > | > news:
| > | > | > | Bonjour, J'ai un combobox avec un certain nombre de
| > valeurs(supposons
| > | > une
| > | > | > | liste de prénoms). Je souhaiterais pouvoir retirer de cette
liste
| > «
| > | > | > Georges »
| > | > | > | ou « Philippe ». Rassurez-vous je n'ai rien contre ces 2
prénoms
| > là,
| > | > c'est
| > | > | > | juste pour l'exemple !!
| > | > | > | Merci de votre aide.
| > | > | > |
| > | > | >
| > | > | >
| > | > | >
| > | >
| > | >
| > | >
| >
| >
| >
1 2