Filtrer avec une combobox
bonjour,
ça fait un petit moment que je cherche à filtrer grâce a une combobox dans l'userform.
je m'explique : dans la feuille ( accueil) il y a le un bouton rechercher, si je veux faire une recherche avec juste le nom d'une pièce je sélectionne le bouton " rechercher par pièce" ensuite grâce a mon menu déroulant je peux sélectionner ma pièce, mais si j'ai 50 pièces avec le même nom c'est pas pratique, c'est pour ça que j'aimerai mettre un filtre quand on sélectionne la pièce ( dans la feuille inventaire).
idem pour la recherche par référence
merci d'avance
Bonjour chazzy,
En supposant que le nom de pièce est ton premier critère, quel est ton second critère? La catégorie?
Tu veux quoi exactement? Lorsque tu sélectionnes ta pièce, il te demande quelque catégorie tu recherches (dans le formulaire)? Ou juste un filtre visuel (dans la page)?
En gros es-ce que tout doit se passer dans le formulaire, ou une partie dans le formulaire, et l'autre partie dans la feuille?
Qu'es-ce qui caractérise un unique produit? Nom + catégorie + référence? / Référence / Nom + catégorie?
Bonjour d3d9x,
en faite, quand tu sélectionne ta pièce à l'aide de la liste déroulante tu valide directement sur le formulaire et il va se remplir automatiquement avec les autres éléments de la ligne de la pièce.
si je prend comme pièce " demi grand ligne 20" je valide, et la il va me remplir " la catégorie" , le stock actuel etc...
donc si on a une pièce avec un nom unique on peut utiliser le formulaire sans problème, mais si on a 5 pièces qui s'appelle "demi grand" mais avec des références différentes il faudrait que le filtre laisse apparaître toute les ligne portant le nom de " demi grand" sur la feuille et pas sur le formulaire.
le filtre existe déjà en (A3) et je voudrais qu'il s'applique automatiquement après avoir validé dans le formulaire.
je viens de me rendre compte d'un problème, quand je rentre une nouvelle pièce avec le même nom qu'une pièce déjà existante mais avec une référence différente, (car on peut pas avoir 2 références identiques), si je fais une entrée ou une sortie de stock elles vont toutes être modifier
les points les plus important sont donc " la pièce et la référence".
je sais pas si c'est très clair =)
je te renvoi le fichier avec plusieurs pièces identiques pour mieux comprendre =)
merci d3d9x =)
Bonjour Chazyy,
Un essai avec un nouveau formulaire (remplaçant les 2 autres)
Cdt
Henri
bonsoir Henri,
merci beaucoup pour ton aide, c'est une très bonne idée de " lié" les 2 combobox
est ce que tu pense que c'est possible aussi de faire l'inverse, c'est à dire je sélectionne ma référence et j'ai les informations ( nom de la pièce, catégorie, stock actuel etc.. ? )
j'ai un autre petit souci, quand je " crée une nouvelle pièce" dans la feuille inventaire ça insert une ligne, donc j'arrive pas a interdire les doublons avec un message d'alerte grâce à la fonction NB.SI. (... : ... ; ... ) =1
j'ai trouver un code VBA qui interdit les doublons avec le message d'alerte mais il me met quand même toute les infos de la ligne et laisse la cellule " référence " vide
merci d'avance
Bonsoir chazyy,
Une autre version avec le bouton recherche comme le fichier initial
1. recherche par pièce
2. recherche par référence
j'ai un autre petit souci, quand je " crée une nouvelle pièce" dans la feuille inventaire ça insert une ligne, donc j'arrive pas a interdire les doublons avec un message d'alerte grâce à la fonction NB.SI. (... : ... ; ... ) =1
j'ai trouver un code VBA qui interdit les doublons avec le message d'alerte mais il me met quand même toute les infos de la ligne et laisse la cellule " référence " vide
Désolé pour ce souci, mais le VBA de ton fichier est très compliqué.
je viens de me rendre compte d'un problème, quand je rentre une nouvelle pièce avec le même nom qu'une pièce déjà existante mais avec une référence différente, (car on peut pas avoir 2 références identiques), si je fais une entrée ou une sortie de stock elles vont toutes être modifier
Logique car tu ne prends en compte que le nom de la pièce dans ton calcul. Il faudrait que dans les feuilles "Entrées" et Sorties" apparaissent également les références de la pièce. Alors une formule SOMMEPROD ferait l'affaire.
Bon WE
Cdt
Henri
Bonjour Henri
merci beaucoup pour ton aide !!
je vais tout simplement évité de mettre deux pièce avec le même nom, ça sera plus simple =)
si c'est pas trop te demandé, j'ai peut être trouver d'ou vient le problème du doublon.
peut être que le problème vient de la ligne qui "s’insère en A4 " donc la fonction NB.SI se décale à chaque fois, donc ça ne marche pas. le mieux serait qu'à chaque nouvelle entrée ( nouvelle pièce, entrée de pièce, sortie de pièce ) la ligne passe à la suivante au lieu d'une insertion en A4.
je pense qu'il faut il faut remplacer le code dans la macro "écriture de ligne" :
If ModeLigne = "Ajout" Then
Application.ScreenUpdating = False
With Sheets("Inventaire")
.Rows(MaLigne).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Selection.ClearContents
Application.CutCopyMode = False
End With
End If
mais je sais pas par quoi la remplacer ? :/
merci encore
cordialement.
Bonsoir,
Remplace ton code par celui-ci
Sub Ecrire_Pièces()
Dim MesLignes, MaLigneEntrée, MaLigneSortie As Integer
Dim MonLibellé, MaCatégorie, MaCar1, MaCar2, MaCar3, MesObservations As String
Dim Formule As String, MonStockInitial As Single
With UF_Pièces
If .Titre.Caption = "Ajouter une Pièce" Then
' AJOUT *******************************************************
ModeLigne = "Ajout"
' MaLigne = Range("Pièces").Row + 1
MaLigne = Range("A" & Rows.Count).End(xlUp).Row + 1 Else
'MODIF *******************************************************
ModeLigne = "Modif"
End If
et le code suivant
If ModeLigne = "Ajout" Then
Application.ScreenUpdating = False
' With Sheets("Inventaire")
' .Rows(MaLigne).Select
' Selection.Copy
' Selection.Insert Shift:=xlDown
' Selection.ClearContents
' Application.CutCopyMode = False
'End With
End If
De cette façon le nouvel enregistrement se placera en dernière ligne.
Cdt
Henri
bonsoir,
Ne pas tenir compte de mon message de hier.
si c'est pas trop te demandé, j'ai peut être trouver d'ou vient le problème du doublon.
peut être que le problème vient de la ligne qui "s’insère en A4 " donc la fonction NB.SI se décale à chaque fois, donc ça ne marche pas. le mieux serait qu'à chaque nouvelle entrée ( nouvelle pièce, entrée de pièce, sortie de pièce ) la ligne passe à la suivante au lieu d'une insertion en A4.
Moi je vois une formule avec SOMME.SI et non NB.SI, mais l'erreur ne vient pas de là, car après insertion de la ligne tu fais un clear.contents.
Quand tu parles de doublon, tu dois parler de la colonne Entrée et ou sortie.
Si tu ne fais pas de contrôle avec la référence, effectivement il va falloir initialiser le nom de toutes les pièces avec des noms différents.
Cdt
Henri
Bonjour Henri
j'ai enlever la fonction NB.SI, il était dans les validations de données.
oui c'est surement a cause de mon clear.contents je vais essayer ça
j'ai repris le code que tu m'avais fait pour la recherche de pièce et de référence " feuille accueil "
j'ai voulu faire le même principe pour faire une sortie en modifiant le nom des combobox bien sur
on ma demander de faire ça car si on sort une pièce ( A ) on la sort par rapport à sa référence, mais pour être sur que c'est bien la pièce (A) et non une autre.
merci beaucoup pour ton aide !
ci-joint le fichier
Bonsoir,
Code pour la Sortie.
Private Sub CB_Pièce_AfterUpdate()
Dim Formule
'recherche nom de la pièce dans inventaire en fonction de la référence
Formule = "=sierreur(RECHERCHEV(" & Chr(34) & Me.CB_Pièce.Value & Chr(34) & "; Pièces;5;faux); " & Chr(34) & Chr(34) & ")"
Range("Cellule_Pièce").FormulaLocal = Formule
Me.CB_Référence.Value = Range("cellule_pièce").Value
'recherche du sock actuel dans inventaire en fonction de la référence
Formule = "=sierreur(RECHERCHEV(" & Chr(34) & Me.CB_Pièce.Value & Chr(34) & "; Pièces;4;faux);0)"
Range("Cellule_Travail").FormulaLocal = Formule
Me.TB_Stock_Actuel.Value = Range("Cellule_Travail").Value
End Sub
La formule viendra dans B5 de la feuille Paramètres (Cellule_Pièce à créer dans gestionnaire de noms)
désolé pour le fichier corrigé mais je ne peux pas le joindre (trop gros)
La modif des entrées et sorties ne fonctionne plus!!!
Cdt
Henri
Bonjour henri
le code pour la sortie fonctionne très bien, j'ai fait la même chose pour l'entrée.
je sais pas pourquoi le fichier est passé de 240Ko a 750 ...
Pour la modif des entrées et sorties il fallait juste supprimer
With UF_Entrées
.ET_Ligne.Caption = "Ligne " & MaLigne - 3 & " - " & MesLignes & " ligne(s) "
With UF_Sorties
.ET_Ligne.Caption = "Ligne " & MaLigne - 3 & " - " & MesLignes & " ligne(s) "
je recherche toujours mon souci de doublon mais je vais finir par trouver la solution
encore merci pour ton aide