OVH Cloud OVH Cloud

Liste de choix

3 réponses
Avatar
Jules Whittom
De A2 à A31 j'ai écrit le nom de 30 villes.

Dans les cellules G2 à J31 je dois, dépendamment des semaines, tapez le nom
de certaines villes. Comment puis-je obtenir une liste de choix pour que je
n'ai pas à taper le nom au complet, seulement les premières lettres, comme
lorsque nous réécrivons une même donnée dans une même colonne?

Merci!
=======================
Jules Whittom

3 réponses

Avatar
gb
Bonjour.

Tu pourrais utiliser un formulaire et une liste déroulante:

Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1.Text
End Sub

gb

"Jules Whittom" <http://cerbermail.com/?7WquFk3oSU> wrote in message
news:
De A2 à A31 j'ai écrit le nom de 30 villes.

Dans les cellules G2 à J31 je dois, dépendamment des semaines, tapez le
nom

de certaines villes. Comment puis-je obtenir une liste de choix pour que
je

n'ai pas à taper le nom au complet, seulement les premières lettres, comme
lorsque nous réécrivons une même donnée dans une même colonne?

Merci!
====================== > Jules Whittom




Avatar
Jean-François Aubert
Salut Jules,

Tu dois créer:
- une plage nommée <ville> (ta liste de ville) dans la feuille <feuil1>
(à modifier à la ligne <Range(Feuil1.adr) ......>
de la proc <Private Sub LB1_Click()>)


- 1 UserForm <UF1>
comportant :
- 1 TextBox <TB1>
- 1 ListBox <LB1>


' ******** dans le module de l'UserForm ********
Option Compare Text

Private Sub LB1_Click()
Range(Feuil1.adr) = UF1.LB1.List(UF1.LB1.ListIndex)
Unload UF1
End Sub

Private Sub TB1_KeyUp(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 119 Then Exit Sub
UF1.LB1.Clear
For i = 1 To Range("ville").Count
If Left([ville].Item(i), Len(UF1.TB1)) Like UF1.TB1 Then
UF1.LB1.AddItem ([ville].Item(i))
End If
Next
End Sub

' *********** dans le module de feuille********
Public adr

Private Sub Worksheet_SelectionChange _
(ByVal Target As Range)
Dim ToutesLesVilles
Dim T_col, T_li, adr

T_col = Target.Column
T_li = Target.Row

If T_col > 6 And T_col < 11 And _
(T_li > 1 And T_li < 32) Then
adr = Target.Address
ToutesLesVilles = [ville]
UF1.Show
End If
End Sub


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Jules Whittom" <http://cerbermail.com/?7WquFk3oSU> a écrit dans le message de
news:
De A2 à A31 j'ai écrit le nom de 30 villes.

Dans les cellules G2 à J31 je dois, dépendamment des semaines, tapez le nom
de certaines villes. Comment puis-je obtenir une liste de choix pour que je
n'ai pas à taper le nom au complet, seulement les premières lettres, comme
lorsque nous réécrivons une même donnée dans une même colonne?

Merci!
====================== > Jules Whittom




Avatar
Jean-François Aubert
Re,

correction du code de module de feuille:

Public adr

Private Sub Worksheet_SelectionChange _
(ByVal Target As Range)
Dim T_col, T_li
T_col = Target.Column
T_li = Target.Row
If Target.Count > 1 Then Exit Sub
If T_col > 6 And T_col < 11 And _
(T_li > 1 And T_li < 32) Then
adr = Target.Address
UF1.Show
End If
End Sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Jean-François Aubert" <à a écrit dans le message de
news:3fb98a92$
Salut Jules,

Tu dois créer:
- une plage nommée <ville> (ta liste de ville) dans la feuille <feuil1>
(à modifier à la ligne <Range(Feuil1.adr) ......>
de la proc <Private Sub LB1_Click()>)


- 1 UserForm <UF1>
comportant :
- 1 TextBox <TB1>
- 1 ListBox <LB1>


' ******** dans le module de l'UserForm ********
Option Compare Text

Private Sub LB1_Click()
Range(Feuil1.adr) = UF1.LB1.List(UF1.LB1.ListIndex)
Unload UF1
End Sub

Private Sub TB1_KeyUp(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 119 Then Exit Sub
UF1.LB1.Clear
For i = 1 To Range("ville").Count
If Left([ville].Item(i), Len(UF1.TB1)) Like UF1.TB1 Then
UF1.LB1.AddItem ([ville].Item(i))
End If
Next
End Sub

' *********** dans le module de feuille********
Public adr

Private Sub Worksheet_SelectionChange _
(ByVal Target As Range)
Dim ToutesLesVilles
Dim T_col, T_li, adr

T_col = Target.Column
T_li = Target.Row

If T_col > 6 And T_col < 11 And _
(T_li > 1 And T_li < 32) Then
adr = Target.Address
ToutesLesVilles = [ville]
UF1.Show
End If
End Sub


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}