Alimentation combobox par item de TCD

P

patrick

Guest
Bonjour à tous,

J'utilise dans une feuille une combobox que je veux alimenter avec des items de tableaux croisés dynamiques.
J'utilise le code suivant :

ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=170, Top:=19, _
Width:=150, Height:=17).Select
ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=357, Top:=19, _
Width:=150, Height:=17).Select
Dim PT As PivotTable
Dim PI As PivotItem
Set PT = ActiveWorkbook.Sheets("Données").PivotTables("TCD comparaison d'états NB")
For Each PI In PT.PivotFields("Entité").PivotItems
If Left(PI.Name, 8) <> "AFFAIRES" Then
AddNameToComboBox PI.Name, Sheets("Données").ComboBox1
End If
Next
End Sub

Sub AddNameToComboBox(NewName As String, LB As MSForms.ComboBox)
Dim i As Integer
For i = 0 To LB.ListCount - 1
If LB.List(i) > NewName Then Exit For
Next
LB.AddItem NewName, i
End Sub


Je reçois en retour le message d'erreur suivant :
"Erreur d'exécution '438' - Propriété ou méthode non gérée par cet objet"

Je ne comprends pas pourquoi.
Merci pour votre aide
 
Z

Zon

Guest
Salut,

Ce n'est pas un userform, on ne peut pas écrire sheets(1).combobox1 quand on crée à la volée, mais testes plutôt:

AddNameToComboBox PI.Name, selection.object

Cela s'appliquera à la 2 eme combo créée.

Autre approche qui devrait fonctionner, j'ai pas testé

dim Lacombo1 as MSForms.ComboBox
dim Lacombo2 as MSForms.ComboBox
Dim PT As PivotTable
Dim PI As PivotItem
set Lacombo1= ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=170, Top:=19, _
Width:=150, Height:=17).object
Set PT = ActiveWorkbook.Sheets("Données").PivotTables("TCD comparaison d'états NB")
set lacombo2= ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=357, Top:=19, _
Width:=150, Height:=17).object
For Each PI In PT.PivotFields("Entité").PivotItems
If Left(PI.Name, 8) <> "AFFAIRES" Then
AddNameToComboBox PI.Name, lacombo1
End If
Next
'faire le traitement pour le 2 eme combo

A+++
 
P

patrick

Guest
Zon,

Je te remercie pour le temps que tu as bien voulu me consacrer.
La question était peut être un peu ambigüe et je l'ai reponsé dans un autre fil.
http://www.excel-downloads.com/html/French/forum/messages/1_115212_115212.htm
Vous êtes donc deux à m'avoir aidé à me sortir de ce piège...


Bonne continuation et merci encore
 

Discussions similaires

Réponses
16
Affichages
2 K