Problème remplissage Combobox

nulo63

XLDnaute Nouveau
Bonjour

J'utilise une combobox pour créer une liste déroulante à partir d'une sélection de cellule.

Pas de problème quant les valeurs de cette sélection sont rentrées au clavier, par contre la combobox ne veut pas se remplir si les valeurs sont issues d'une formules comme:

=RECHERCHE(B6;'Donnees communes'!A$4:A$520;'Donnees communes'!D$4:D$520)

La combobox ne renvoie pas le résultat de la recherche, je ne comprends pas pourquoi? :confused:
 

nulo63

XLDnaute Nouveau
Re : Problème remplissage Combobox

oups désolé si je me suis fait mal comprendre, je ne peux pas joindre de fichier (données confidentielles malheureusement)

la combobox est située sur la sheet2 et se remplie avec le code suivant

Code:
Private Sub UserForm_Initialize()
  UserForm1.Left = ActiveCell.Left + 10
  UserForm1.Top = ActiveCell.Top + 100
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(Sheets("sheet1").[A1], Sheets("sheet1").[A65000].End(xlUp))
     If Not MonDico.Exists(c.Value) And c <> "" Then MonDico.Add c.Value, c.Value
  Next c
  temp = MonDico.items       ' le tableau temp() reçoit les éléments de MonDico
  Call Tri(temp, LBound(temp), UBound(temp))     ' tri
  Me.ComboBox1.List = temp                              ' éléments dans combobox1
  SendKeys "{F4}"
End Sub

Private Sub ComboBox1_Change()
  ActiveCell = ComboBox1
  Unload Me
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
        temp = a(g): a(g) = a(d): a(d) = temp
        g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)
End Sub

Lorsque sur la feuille sheet1 colonne A, les valeurs sont de type: toto, bébé, rouge, la combobox se remplie sans problème

par contre lorsque les valeurs sont le résultat d'une formule comme

Code:
=RECHERCHE(B8;'Donnees communes'!A$4:A$520;'Donnees communes'!D$4:D$520)

j'ai l'erreur suivante:
erreur d'exécution '13'
incompatibilité de type

j'ai l'impression que le résultat de =RECHERCHE..... n'est pas pris en compte

j'espère avoir été le plus clair possible
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Problème remplissage Combobox

Re,

Bon, je ne vois qu'une raison (bébête) à ce bug : sur certaines lignes en colonne A de Sheet1 la fonction RECHERCHE renvoie la valeur d'erreur #N/A...

Vous ne l'avez peut-être pas vu s'il y a beaucoup de valeurs.

Dans ce cas remplacez le code :

If Not MonDico.Exists(c.Value) And c <> "" Then MonDico.Add c.Value, c.Value

par :

Code:
If Not MonDico.Exists(c.Value) And Not (IsEmpty(c) Or IsError(c)) Then MonDico.Add c.Value, c.Value

ou s'il n'y a jamais de cellule vide :

Code:
If Not MonDico.Exists(c.Value) And Not IsError(c) Then MonDico.Add c.Value, c.Value

A+
 

nulo63

XLDnaute Nouveau
Re : Problème remplissage Combobox

Merci mille fois, vous avez trouvé la solution, dans les 400 lignes du tableau il y a effectivement une valeur d'erreur #N/A! :)

Dans ce cas remplacez le code :

If Not MonDico.Exists(c.Value) And c <> "" Then MonDico.Add c.Value, c.Value

par :

Code:

If Not MonDico.Exists(c.Value) And Not (IsEmpty(c) Or IsError(c)) Then MonDico.Add c

Désolé, mon message n'était pas clair, je débute en programmation vba et ce n'est pas facile.

Merci encore!
 

Discussions similaires

Réponses
6
Affichages
317

Statistiques des forums

Discussions
312 321
Messages
2 087 259
Membres
103 498
dernier inscrit
FAHDE