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é

3liste-ref-ean.xlsx (10.77 Ko)

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

Rechercher des sujets similaires à "filtre"