ComboBox Affichage Liste

  • Initiateur de la discussion Initiateur de la discussion Nosperato
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
459
Réponses
3
Affichages
586
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
234
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
229
Retour