Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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.

10 réponses

1 2
Avatar
LSteph
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
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 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
StDonat
Merci, j'essaye mais il va me falloir du temps!!

"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,

(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
StDonat
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
LE TROLL
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, 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 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
Je te fais ça en VB pour le tester, désolé, c'était juste un schéma de
principe...

--
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:
| 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