Filtre sur une cellule
Bonjour,
Je dois recopier la ref "EAN" à 13 chiffres dans un tableau via un document papier reçu.
C'est usant et le risque d'erreur est important.
Sachant que les 4 derniers permettent d'identifier le produit, je me demandais s'il était possible de mettre en place un filtre sur une cellule..en tapant les 4 derniers chiffres, j'obtiens en proposition ma référence..et hop je valide.
j'avais pensé à un menu déroulant....trop de ref "EAN" (200)...impossible.
en PJ...le fichier ou je rentre les 13 chiffres (cellule bleue) et le fichier ou sont centralisées toutes les ref "EAN".
Si quelqu'un à une idée, pour me faciliter la tache...je prends!!!
Merci d'avance pour votre aide.
Clé
Bonjour,
les 4 derniers n'est pas suffisant. Hormis les vrai doublons qu'il faudrait supprimer, tu peux avoir plusieurs EAN se terminant pareil.
Tu saisis de 1 à 4 chiffres (les 0 non significatifs ne sont pas à saisir) et tu valides.
Ne fait rien si plus de 4 chiffres ou si inconnu.
Si unique je remplis, si plusieurs (ex : 227) tu as une liste pour choisir. En cliquer un pour remplir.
Si tu mets à jour la feuille EAN, il faut la trier par la colonne 'fin'.
Accepter les macros à l'ouverture.
eric
Bonsoir Eriiic,
Je te remercie, c'est exactement ce que je souhaitais.
Peux-tu m'indiquer comment on copie/ou applique cette macro sur un autre fichier?
Je m'explique, j'ai un fichier avec 15 onglets identiques à la feuille 1 (de ton fichier) déjà complétés.
j'y ai ajouté l'onglet "EAN" et fais un copier/coller de la cellule de filtre, mais cela ne marche pas.
Je te remercie d'avance pour ton retour.
Clé
Bonjour,
Sur chaque feuille de saisie tu mets une zone de liste ActiveX (pas Formulaire).
Si tu n'as pas l'onglet Développeur pour la mettre, clic-droit sur le ruban et 'Personnaliser'.
'Developpeur / Insérer'
Tant qu'elle est sélectionnée tu contrôles son nom (à l'intersection des n° de lignes et de colonnes) qui doit être ListBox1, et tu régles la largeur et la hauteur voulue.
Sur chaque feuille, clic-droit sur l'onglet et 'Visualiser le code'
Dans la fenêtre de droite tu colles :
Option Explicit
Dim cel As Range, noEvents As Boolean
Private Sub ListBox1_Click()
If noEvents Then Exit Sub
noEvents = True
cel = ListBox1.Text
noEvents = False
ListBox1.Visible = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range
If noEvents Then Exit Sub
If Not Intersect(Target, [N3:N122]) Is Nothing And IsNumeric(Target) Then
If Target.Value < 10000 And Target.Value <> "" Then
With Sheets("EAN")
Set pl = .Columns(2).Find(Target.Value, , xlValues, xlWhole)
If Not pl Is Nothing Then
noEvents = True
Set pl = pl.Offset(, -1).Resize(Application.CountIf(.Columns(2), Target.Value))
If pl.Cells.Count = 1 Then
Target.Value = pl.Value
Else
Set cel = Target
ListBox1.List = pl.Value
ListBox1.ListIndex = -1
ListBox1.Top = Target.Offset(1).Top
ListBox1.Left = Target.Offset(1).Left
ListBox1.Visible = True
End If
noEvents = False
End If
End With
End If
End If
End Sub
Plus qu'à tester.
eric