Liste modifiable

diablo59

XLDnaute Nouveau
Bonjour a vous,
j'ai un petit problème ce code en vba.
j'ai placé une zone de liste modifiable dans un Userform, avec une liste de 30 mots dans une feuille excel.
Mais quand je clic sur cette liste modifiable je voix bien les 30 mots que je peut sélectionné mais le problème reste que je ne veut pas que l'on puisse écrire dans la zone blanche de cette liste modifiable.

Avez-vous une solution !!!!

Je vous remercie

Amicalement.
 

Pierrot93

XLDnaute Barbatruc
Re : Liste modifiable

Bonjour,

essaye peut être ainsi, si j'ai bien compris :

Code:
Private Sub UserForm_Initialize()
With ComboBox1
    .List = Range("A1:A30").Value
    .MatchRequired = True
End With
End Sub

code à utiliser dans le module de l'usf

bonne journée
@+
 

diablo59

XLDnaute Nouveau
Re : Liste modifiable

cela ne marche pas.
Je te joint un modèle d'Userform pour mieux me faire comprendre.
Et voici le code vba.

Private Sub UserForm_Initialize()
''''Choix Equipe
i = 2
While (i < 7)
ComboBox1.AddItem Feuil27.Range("A" & i)
i = i + 1
Wend
With ComboBox1
Equipe = Range("A2:A6").Value
MatchRequired = True
End With

''''Apres
n = 2
While (n < 50)
ComboBox2.AddItem Feuil27.Range("B" & n)
n = n + 1
Wend

''''Vers
P = 2
While (P < 50)
ComboBox3.AddItem Feuil27.Range("B" & P)
P = P + 1
Wend
 

Pièces jointes

  • CApture01.jpg
    CApture01.jpg
    31.6 KB · Affichages: 206
  • CApture01.jpg
    CApture01.jpg
    31.6 KB · Affichages: 201
  • CApture01.jpg
    CApture01.jpg
    31.6 KB · Affichages: 195

bérylion

XLDnaute Occasionnel
Re : Liste modifiable

cela ne marche pas.
Je te joint un modèle d'Userform pour mieux me faire comprendre.
Et voici le code vba.

Private Sub UserForm_Initialize()
''''Choix Equipe
i = 2
While (i < 7)
ComboBox1.AddItem Feuil27.Range("A" & i)
i = i + 1
Wend
With ComboBox1
Equipe = Range("A2:A6").Value
MatchRequired = True
End With

''''Apres
n = 2
While (n < 50)
ComboBox2.AddItem Feuil27.Range("B" & n)
n = n + 1
Wend

''''Vers
P = 2
While (P < 50)
ComboBox3.AddItem Feuil27.Range("B" & P)
P = P + 1
Wend


Salut

pourquoi utiliser un combobox ?:confused:

un listbox fait tout aussi bien la maille et ça répond à ta question...

;)
 

diablo59

XLDnaute Nouveau
Re : Liste modifiable

Comme tu peut le voir dans la Capture04 cette liste nommé equipe comporte 5 choix et je ne veut pas que l'on puisse écrire autre chose ou ce trouve le curseur !
on doit obligatoirement choisir l'une de ces 5 options.
 

Pièces jointes

  • CApture04.jpg
    CApture04.jpg
    25.6 KB · Affichages: 170
  • CApture04.jpg
    CApture04.jpg
    25.6 KB · Affichages: 190
  • CApture04.jpg
    CApture04.jpg
    25.6 KB · Affichages: 192

bérylion

XLDnaute Occasionnel
Re : Liste modifiable

Comme tu peut le voir dans la Capture04 cette liste nommé equipe comporte 5 choix et je ne veut pas que l'on puisse écrire autre chose ou ce trouve le curseur !
on doit obligatoirement choisir l'une de ces 5 options.

un combobox (ou zone de liste modifiable) est un mix entre un listbox (zone de liste) et un textbox (zone de texte)
  • dans un listbox tu ne peux que choisir parmi les items proposés
  • dans un textbox tu peux uniquement écrire
  • dans un combobox tu peux faire les deux au choix

choisi ton camp camarade...

;)
 

bérylion

XLDnaute Occasionnel
Re : Liste modifiable

tu peux toujours essayer de biaiser avec ce bout de code :

Code:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Me.ComboBox1.Text = ""
End Sub

mais c'est pas "propre"...

;)
 

bérylion

XLDnaute Occasionnel
Re : Liste modifiable

pour la forme, tu peux l'intégrer à un module de classe pour gérer toutes tes combobox avec une seule procédure :
(je sais faire depuis hier, j'en profite :D)

dans le USF :

Code:
Dim cbx_blanc() As New cbx_blanc


Private Sub UserForm_Initialize()
For Each cbx In Me.Controls
    If TypeOf cbx Is MSForms.ComboBox Then
        cnt = cnt + 1
        ReDim Preserve cbx_blanc(1 To cnt)
        Set cbx_blanc(cnt).cbx_blanc = Me.Controls("Combobox" & cnt)
    End If
Next
End Sub

dans un module de classe (appelé cbx_blanc ; impératif !)

Code:
Public WithEvents cbx_blanc As MSForms.ComboBox

Private Sub cbx_blanc_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
UserForm1.Controls(cbx_blanc.Name).Text = ""
End Sub

[changer userform1 par le nom de ton usf si différent ; on pourrait "variabiliser" mais pas à cette heure-ci...]

;)
 

Pierrot93

XLDnaute Barbatruc
Re : Liste modifiable

Bonjour,

A noter, lorsque utilisé dans un bloc d'instructions "with" il faut placer un point devant les instructions pour que celles-ci s'appliquent à l'objet concerné...

Code:
With ComboBox1
Equipe = Range("A2:A6").Value
[COLOR="Red"][B][SIZE="4"].[/SIZE][/B][/COLOR]MatchRequired = True
End With

lorsque cette propriété (MatchRequired) à la valeur "true", renvoie un message box à la sortie ddu controle si saisie manuelle...

Sinon pas trop facile de travailler sur des photos...

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Liste modifiable

Re,

ton code semble fonctionner et correspondre à ta demande...

sinon pour utiliser la propriété "MatchRequired " et éviter les événements "change" des combo tu aurais pu mettre ceci, par contre le contrôle se fait à la sortie de la combo...

Code:
Private Sub UserForm_Initialize()
'Choix Equipe
  Set C1 = Range("A2:A6")
  Set C2 = Range("B2:B49")
   For Each V_C In C1
    ComboBox1.AddItem V_C
  Next
 'suite
  For Each V_C In C2
    ComboBox2.AddItem V_C
    ComboBox3.AddItem V_C
  Next
ComboBox1.MatchRequired = True
ComboBox2.MatchRequired = True
ComboBox3.MatchRequired = True
End Sub

@+
 

Discussions similaires

Réponses
1
Affichages
179
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 836
Messages
2 092 623
Membres
105 469
dernier inscrit
gautronmi