Excel 2007 - Filtre, macro et inputbox

Résolu/Fermé
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 - Modifié par Beeloobop le 9/07/2010 à 17:43
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 - 13 juil. 2010 à 11:15
Bonjour,

Un petit souci technique me pousse à faire appel à vous après avoir cherché longuement une solution, en vain, sur internet.

J'ai une feuille excel de gestion d'un magasin qui se présente ainsi :
Colonne A Référence du produit (numérique)
Colonne B Désignation du produit
Colonne C Stock
Colonne D Fournisseur
(Ces 4 colonnes seront masquées par la suite... quand tout fonctionnera complètement!)

J'ai créé une macro (non sans mal et non sans aide ^^) qui me permet de faire apparaitre Une boîte de dialogue pour pouvoir entrer une désignation de produit et un chiffre de stock (Ex : tous les stocks de 0 avec une désignation de pelle).

Sub rech_stock_vide()
Dim Designation As String
Designation = InputBox("Saisissez la désignation du produit recherché. " & vbNewLine & vbNewLine & "Mettre le mot recherché entre astériques pour une recherche partielle. " & vbNewLine & "Ex : *Boîte*")
Dim Stock As String
Stock = InputBox("Saisissez la quantité en stock que vous voulez faire apparaître")
Dim Fournisseur As String
Stock = InputBox("Saisissez le fournisseur recherché")

With ActiveSheet
If Not .AutoFilterMode Then .Range("A1").AutoFilter
End With
Selection.AutoFilter Field:=2, Criteria1=Designation, Operator:=xlAnd
Selection.AutoFilter Field:=3, Criteria1:=Stock, Operator:=xlAnd
Selection.AutoFilter Field:=4, Criteria1:=Fournisseur, Operator:=xlAnd

Dim Lg%
Lg = Range("A65536").End(xlUp).Row
Range("a1:d" & Lg).Select
Range("a1:d" & Lg).Copy
Range("f10").Select
ActiveSheet.Paste

ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=1
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=2
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=3
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=4
End Sub

Ma question :
Quel est le "code" à entrer dans la boîte de dialogue pour obtenir, par exemple, les désignations contenant le mot pelle (en mettant *pelle* ça je sais) quelque soit le stock et le fournisseur (ça je sais pas)? En gros, ne pas filtrer sur le stock et le fournisseur meme s'il me le demande dans la boîte de dialogue.
J'ai testé ** ou "" ou rien ou * *
Mais rien n'y fait je ne trouve pas, je suis obligée de lui donner une valeur pour que la macro fonctionne.

Si vous aviez une idée ça searit vraiment chouette!

Merci à ceux qui prendront le temps de me répondre!

Beeloobop

PS : un nouveau problème s'ajoute à celui-ci, quand je masque les 4 colonnes, la macro m'affiche le résultat de ces colonnes filtrées dans le désordre! Les intitulés de colonne sont dans le bon ordre mais les données en dessous ne correspondent pas! Une idée de la super mauvaise manip que j'ai fait?

A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
Modifié par gbinforme le 9/07/2010 à 22:13
bonjour

Le plus simple est de changer ainsi ton code :

If Stock <> "" Then 
    Selection.AutoFilter Field:=3, Criteria1:=Stock, Operator:=xlAnd 
End If 
If Fournisseur <> "" Then 
    Selection.AutoFilter Field:=4, Criteria1:=Fournisseur, Operator:=xlAnd 
End If 

Dim Lg%
Lg = Range("A65536").End(xlUp).Row
Range("a1:d" & Lg).Copy Destination:=Range("f10")

Ainsi, lorsque tu ne saisis pas de Stock et/ou pas de Fournisseur, ton code fonction selon ton souhait.

Toujours zen
0
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 11
13 juil. 2010 à 10:38
Ah ouaiiiis...
Je vais tester ça tout de suite!
Merci beaucoup!
0
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 11
13 juil. 2010 à 10:56
Merci pour ta réponse!
ça marche nickel pour le stock, mais curieusement ça ne fonctionne pas pour le fournisseur (toutes les lignes ne sont pas encore remplie, ça expliquerait le problème?).
Par exemple si je met Désignation=Pelle et Stock="" et que dans le code j'ai mis les lignes concernant le fournisseur en texte, tout va bien, j'obtiens toutes les pelles quelque soit leur stock.
Mais si je remets les lignes de fournisseur dans le code, et que je mets Fournisseur = "" (avec les mêmes critères que précédement pour les 2 autres filtres) alors il me sort toute la liste du magasin!
C'est à n'y rien comprendre ce shmilblik... Encore une idée de génie?
0
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 11
13 juil. 2010 à 11:15
Arf!
En fait il y avait une coquille dans mon code
Stock était déterminé par les deux entrées d'inputbox de Stock et Fournisseur!
Un copier-coller malheureux ...
Du coup ça marche à merveille!
Merci pour ton aide précieuse!
0