ComboBox Affichage Liste

Nosperato

XLDnaute Nouveau
Bonjour,

Je cherche un moyen d'afficher une liste dans une combobox à partir de colonne différente en VBA car à partir de Validation des données Excel ne veut pas prendre des valeurs de colonne différente.

Voici un bout de code que j'ai fais, mais qui ne fais pas ce que je veux...

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([A2:A16], Target) Is Nothing And Target.Count = 1 Then
    With Worksheets("bd").ComboBox1
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    ' Me.ComboBox1.List = Union("toto")
    For A = 1 To Range("F1:I23").Rows.Count
  ' .AddItem Range("A" & A)
    .List(A, 0) = Range("I" & A)
    .List(A, 0) = Range("G" & A)
    Next
    End With
  Else
    Me.ComboBox1.Visible = False
  End If
End Sub

Code:
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" Then
   ActiveCell.Value = Me.ComboBox1
 End If
End Sub

Si quelqu'un peut m'aider cela serait cool car je coule... Merci
PS : Je veux avoir la possibilité d'écrire ce que je veux dans la combobox voici la raison pour laquelle je n'ai pas fais de Listbox.

Merci de votre aide
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Déjà si tu n'as pas eu de retour c'est parce que ......pas de fichier !!! on peut pas deviner comment sont tes données
Là j'ai tenté de supputer !!!! mais je pense que le ne peux pas cumuler l'alimentation de la combo sur plusieurs colonnes
 

Pièces jointes

  • Classeur1.xlsm
    21.6 KB · Affichages: 13

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,


Exemple en PJ

VB:
Dim a(), f
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set f = Sheets("bd")
  Set zSaisie = Range("A2:A16")
  If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
    Set d = CreateObject("scripting.dictionary")
    For Each c In f.Range("G1:G23,I1:I13")
      If c.Value <> "" Then d(c.Value) = ""
    Next c
    a = d.keys
    Tri a, LBound(a), UBound(a)
    Me.ComboBox1.List = a
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    mémo = Target.Address
  Else
    Me.ComboBox1.Visible = False
  End If
End Sub

Private Sub ComboBox1_Change()
  If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
    Set d1 = CreateObject("Scripting.Dictionary")
    tmp = UCase(Me.ComboBox1) & "*"
    For Each c In a
      If UCase(c) Like tmp Then d1(c) = ""
    Next c
    Me.ComboBox1.List = d1.keys
    Me.ComboBox1.DropDown
  End If
  ActiveCell.Value = Me.ComboBox1
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    If IsError(Application.Match(ActiveCell, a, 0)) Then ActiveCell = ""
    ActiveCell.Offset(1).Select
  End If
End Sub

Boisgontier
 

Pièces jointes

  • Copie de DVSaisieIntuitiveComboBox-3.xls
    101 KB · Affichages: 18
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 705
Messages
2 081 724
Membres
101 804
dernier inscrit
chefTarik