Alimenter ComboBox2 selon le choix de ComboBox1 vba

Teatom

XLDnaute Nouveau
Bonjour à tous,

Je fais appel à vous car j'ai une question d'ordre pratique concernant la programmation de mes ComboBox dans un formulaire USF.

Dans les faits, afin de procéder à une recherche multi-critères, je dispose de deux ComboBox contenant les mêmes items (12 au total, ID, Nom, Prénom etc).

Je souhaite pouvoir contraindre la ComboBox2 de manière à ce que si l'utilisateur saisit ID comme critère de recherche dans la ComboBox1, ce choix ne puisse plus apparaître parmi les items de la ComboBox2.

J'ai bien un bout de code qui marche mais je n'en suis pas satisfait (pas très ergonomique pour l'utilisateur) :

'If (ComboBox1.Value <> "" And ComboBox2.Value <> "") Then
' If ComboBox2.Value = ComboBox1.Value Then
' MsgBox "Veuillez sélectionner un critère de recherche différent", vbInformation, "Erreur"
' ComboBox2.Value = ""
' End If
'End If


Merci de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Alimenter ComboBox2 selon le choix de ComboBox1 vba

Bonjour,

essaye ceci, si j'ai bien compris, pas sûr....
Code:
If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Or ComboBox1.Value = ComboBox2.Value Then
    MsgBox "choix identiques"
End If

bonne journée
@+
 

Teatom

XLDnaute Nouveau
Re : Alimenter ComboBox2 selon le choix de ComboBox1 vba

Bonjour Pierrot93,

Merci pour ta réponse, c'est en fait à peu près ce que j'arrive à faire avec mon bout de code; en fait je ne voudrais tout simplement pas passer par une MsgBox qui me dise que les choix saisis sont identiques, je trouve ça un peu lourd pour l'utilisateur.

Je souhaiterai qu'une fois la valeur saisie dans la ComboBox1, celle-ci soit directement retirée de la liste de choix possibles de la ComboBox2. J'ai bien essayé avec RemoveItem mais sans résultat :

' Set it = ComboBox1.Value
' With ComboBox2
' For j = 1 To 12
' If ComboBox2.Value(j) = it Then
' .RemoveItem (j)
' End If
' Next j
' End With


Merci par avance
 

pierrejean

XLDnaute Barbatruc
Re : Alimenter ComboBox2 selon le choix de ComboBox1 vba

Bonjour Teatom

Salut ami Pierrot :) :)

VB:
Private Sub ComboBox1_Change()
Dim tablo()
ReDim tablo(0)
For n = 0 To ComboBox1.ListCount - 1
If ComboBox1.List(n) <> ComboBox1 Then
tablo(UBound(tablo)) = ComboBox1.List(n)
ReDim Preserve tablo(UBound(tablo) + 1)
End If
Next n
ReDim Preserve tablo(UBound(tablo) - 1)
ComboBox2.List = tablo
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 093
Membres
104 029
dernier inscrit
Neozz14