[VBA] Combobox qui ne fonctionne pas

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 !

ralph45

XLDnaute Impliqué
Bonjour @tou.te.s !

J'ai copié sur le site de JBoisgontier un code qui doit générer un ComboBox où les premières lettres saisies doivent afficher une liste d'afférences (AutoCompletion).

Seulement, en l'adaptant un peu (référence de la base),le code me génère une erreur...
"Erreur de compilation
Type défini par l'utilisateur non défini"

Voici le code et là où cela plante...
Merci de votre aide !!

Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([A2:A45], Target) Is Nothing And Target.Count = 1 Then
a = Sheets("BASE1").Range("BASE1_VOIE_NOM").Value
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
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = a
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub
 
Bonjour @tou.te.s !

J'ai trouvé la solution : ce n'était pas une erreur de code, mais en tant que satané blaireau que je suis, j'avais supprimé ma ComboBox1 ! 😵

Le code est donc nickel mais j'aurai besoin de l'adapter à mon fichier (voir en PJ) :
Intégrer dans une même feuille 2 ComboBox, faisant référence à 2 plages nommées et qui impactent 4 colonnes...
ComboBox1 = colonnes A et C
ComboBox2 = Colonnes B et D
Je pense avoir tout saisi dans ma demande dans le fichier joint

Et encore merci de vos lumières !
 

Pièces jointes

Bonjour,
Essayer comme ceci, j'ai supprimé certaines parties du code, je pense qu'il n'était plus utile.
Bruno
VB:
Dim a(), f
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Set f = Sheets("BASE")
  If Not Intersect(Range("A3:A30,C3:C30"), Target) Is Nothing And Target.Count = 1 Then
    a = Application.Transpose(f.Range("A2:A" & f.[A65000].End(xlUp).Row))
    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
  Else
    Me.ComboBox1.Visible = False
  End If
  If Not Intersect(Range("B3:B30,D3:D30"), Target) Is Nothing And Target.Count = 1 Then
    a = Application.Transpose(f.Range("C2:C" & f.[C65000].End(xlUp).Row))
    Me.ComboBox2.List = a
    Me.ComboBox2.Height = Target.Height + 3
    Me.ComboBox2.Width = Target.Width
    Me.ComboBox2.Top = Target.Top
    Me.ComboBox2.Left = Target.Left
    Me.ComboBox2 = Target
    Me.ComboBox2.Visible = True
    Me.ComboBox2.Activate
  Else
    Me.ComboBox2.Visible = False
  End If
 
End Sub
Private Sub ComboBox1_Change()
  ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    ActiveCell.Offset(1).Select
  End If
End Sub
Private Sub ComboBox2_Change()
  ActiveCell.Value = Me.ComboBox2
End Sub
 
- 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
6
Affichages
604
Réponses
4
Affichages
751
Réponses
0
Affichages
898
Retour