Filtre automatique declenche par combobox

Goldshakka

XLDnaute Nouveau
Bonjour à toutes et à tous,

Voilà 2 jours que je me tire les cheveux et cherche une solution à un problème qui semble tout bête en vain, je viens donc à vous après avoir longuement cherché sur différents sites et forums une explication. Vous êtes mon dernier espoir (bon ok j’en fais de trop la)
Voilà j’ai créé un UserForm dans lequel se situe 2 combobox. La première énumère des familles de produits (combobox1) et le second les sous-produits (combobox2) en fonction de ce qui a été choisi dans le combobox1.
Cela semble tout bête sauf que ma liste de produit est très longue… et donc lorsque je choisis une famille de produit dans mon combobox1 cela doit également déclencher un filtre de ma liste de produit, cette liste est ensuite copier sur une autre feuille et ma combobo2 viens y chercher sa source.
J’ai réalisé chaque étapes individuellement et tout marche, mais dès que j’essaie d’introduire ma macro de filtrage dans mon combobox1_change() ca plante ! voici le code que j’utilise :
Private Sub ComboBox1_Change()
Dim cat As Integer

‘la famille de produit conditionnera le critère du filtre
Worksheets("dbmat").Cells(4, 1) = ComboBox1.Value
cat = Worksheets("dbmat").Cells(4, 1).Value

‘Filtre selon le critere
Worksheets("dbmat").Select
ActiveSheet.Range("$A$38:$A$2000").AutoFilter Field:=1, Criteria1:=cat

‘Copie des donnees filtres dans sur une autre feuille
Worksheets("dbmat").Select
ActiveSheet.Range("A39:D500").Select
Selection.Copy
Sheets("matexport").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("dbmat").Select

End Sub


La chose folle c’est que lorsque je lance la macro tout se déroule comme prévu, mes produits sont filtres en fonction de la valeur de combobox1 et tout se copie dans la feuille désirée mais un message d’erreur apparait et débugge s’affiche en soulignant la ligne indiquée en jaune.

aussi si j'efface du combobox1 le fitrage/copage/collage et le met dans un bouton dans ce cas ca marche mais ca oblige a cliauer sur un bouton au lieu d avoir le fitrage automatiquement.

Qu’ai-je fait de mal oh cruel VBA !!!

J’espère avoir été assez clair et accepterais volontiers quelques conseils de votre part.

Dans l’attente de vous lire !!!
Ci-joint le fichier excel
 

Pièces jointes

  • test envoyer sur forum.xlsm
    56.6 KB · Affichages: 100

Pierrot93

XLDnaute Barbatruc
Re : Filtre automatique declenche par combobox

Bonjour,

pas ouvert ton fichier, pas 2007... mais essaye peut être avec l'événement click du combo..
Code:
Private Sub ComboBox1_Click()
Dim cat As Integer
If ComboBox1.ListIndex <> -1 Then
    With Worksheets("dbmat")
        .Cells(4, 1) = ComboBox1.Value
        cat = .Cells(4, 1).Value
        .Range("$A$38:$A$2000").AutoFilter Field:=1, Criteria1:=cat
        .Range("A39:D500").Copy Sheets("matexport").Range("A1").Select
    End With
End If
End Sub

A voir ensuite, quel type de donnée est récupéré dans ta variable "cat"...

bonne journée
@+
 

Goldshakka

XLDnaute Nouveau
Re : Filtre automatique declenche par combobox

Merci Pierrot, mais malheureusement ça ne marche pas, avec ta méthode la valeur de cat ne change plus . J’ai essayé :) de bidouiller avec combobox_click mais j’ai toujours le même problème.
Pour répondre à ta question, cat a pour valeur un chiffre, chiffre qui est lui-même défini par la valeur du combobox1
 

Goldshakka

XLDnaute Nouveau
Re : Filtre automatique declenche par combobox

en deplacant un ligne de ton code la valeur de cat change bien mais l'erreur se repoduit encore.... au niveau de: "Worksheets("dbmat").Range("$A$38:$A$2000").AutoFilter Field:=1, Criteria1:=cat"

Code:

Private Sub
ComboBox1_Click()
Dim cat As Integer
Worksheets("dbmat").Cells(4, 1) = ComboBox1.Value

With cat = Worksheets("dbmat").Cells(4, 1).Value

Worksheets("dbmat").Range("$A$38:$A$2000").AutoFilter Field:=1, Criteria1:=cat

Worksheets("dbmat").Select
ActiveSheet.Range("A39:D1550").Select
Selection.Copy
Sheets("matexport").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("dbmat").Select
End With

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Filtre automatique declenche par combobox

Quel est la ligne qui provoque l'erreur ? A noter que la combo passe une valeur de type "string"... il y a peut être lieu d'utiliser une conversion :
Code:
.Cells(4, 1) = CDbl(ComboBox1.Value)
 

Goldshakka

XLDnaute Nouveau
Re : Filtre automatique declenche par combobox

comme ca? desole premiere que je viens sur ce site... peut etre que je peux convertir le fichier en excel 2003 et le mettre sur le forum

Private Sub ComboBox1_Click()
Dim cat As Integer
Worksheets("dbmat").Cells(4, 1) = ComboBox1.Value
With cat = Worksheets("dbmat").Cells(4, 1).Value

Worksheets ("dbmat")
ActiveSheet.Range("$A$38:$A$2000").AutoFilter Field:=1, Criteria1:=cat

Worksheets("dbmat").Select
ActiveSheet.Range("A39:D1550").Select
Selection.Copy
Sheets("matexport").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("dbmat").Select
End With

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Filtre automatique declenche par combobox

Re,

non, c'est les balises code en mode avancé qu'il faut utiliser(icone #)... post #6, je disais que cette ligne n'est pas valide :
Code:
With cat = Worksheets("dbmat").Cells(4, 1).Value

oui tu peux mettre un tout petit fichier en xls, avec juste le nécessaire montrant uniquement le problème posé...
 

Goldshakka

XLDnaute Nouveau
Re : Filtre automatique declenche par combobox

J' ai essayer avec votre proposition dan le poste #4

Private Sub ComboBox1_Click()
Dim cat As Integer
Worksheets("dbmat").Cells(4, 1) = CDbl(ComboBox1.Value)

cat = Worksheets("dbmat").Cells(4, 1).Value
'
Worksheets("dbmat").Range("$A$38:$A$150").AutoFilter Field:=1, Criteria1:=cat

Worksheets("dbmat").Select
ActiveSheet.Range("A39:D1550").Select
Selection.Copy
Sheets("matexport").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("JobInfo").Select

End Sub

mais toujours meme problem, ca bloque. desole pour le smiley il se met automatiquement
 

Goldshakka

XLDnaute Nouveau
Re : Filtre automatique declenche par combobox

Oui voilà j'ai transformé et simplifier le fichier, j’espère que cela ira. Merci de votre patience.
 

Pièces jointes

  • test.xls
    119.5 KB · Affichages: 99
  • test.xls
    119.5 KB · Affichages: 116
  • test.xls
    119.5 KB · Affichages: 112

Pierrot93

XLDnaute Barbatruc
Re : Filtre automatique declenche par combobox

Re,

essaye avec le code ci-dessous, attention j'ai supprimé ton combo et j'en ai remis un avec les propriétés par défaut, le tien avait un comportement étrange, la modification des propriétés, alimentation des données se fait lors de l'initialisation de l'usf, code également ci-dessous à placer dans le module de ce dernier... :

Code:
Private Sub ComboBox1_Click()
Dim cat As Integer
If ComboBox1.ListIndex <> -1 Then
    With Worksheets("dbmat")
        .Cells(4, 1) = ComboBox1.Value
        cat = .Cells(4, 1).Value
        .Range("$A$38:$A$2000").AutoFilter Field:=1, Criteria1:=cat
        .Range("A39:D500").Copy Sheets("matexport").Range("A1")
    End With
End If
End Sub

Code:
Private Sub UserForm_Initialize()
With ComboBox1
    .ColumnCount = 2
    .BoundColumn = 2
    .List = Worksheets("dbmat").Range("A7:B9").Value
End With
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Filtre automatique declenche par combobox

Re,

tu as bien supprimé le combo ???? ci-joint le fichier.
 

Pièces jointes

  • classeur2.zip
    32.5 KB · Affichages: 112
  • classeur2.zip
    32.5 KB · Affichages: 110
  • classeur2.zip
    32.5 KB · Affichages: 116

Discussions similaires

Réponses
3
Affichages
586

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote