Filtre a partir d'une liste et ajout d'élément manquant

Bonjour tous le monde,

Je me permets de solliciter votre aide. Je pense que le problème a déjà dû être posté quelque parts, mais impossible de trouver quoique ce soit (ici où ailleurs) peut être ai-je mal formulé ma recherche. c'est pourquoi je me décide finalement a appeler a l'aide.

dans un tableau variable, il y aune colonne Famille qui comprend des famille de produits (informatique et telephonie)

Je dois filtrer cette colonne en fonction des produits.

J'ai déjà scripté cette partie (voir fichier joint)

ce que je souhaiterai c'est que si un élément apparaît dans la colonne FAMILLE mais qu'il n'est présent ni dans la file micro ni dans la file téléphonie, qu'il me demande dans quelle file l'ajouter.

J'espère avoir été assez clair mais ce n'est pas évident a expliquer comme ça sans le fichier sous les yeux.

En vous remerciant de l'aide que vous pourriez m'apporter.

Cordialement

Bargoth

Bonjour,

à mettre dans le module de FILE :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range, c As Range, c2 As Range, rep As Long, col As Long
    Set pl = Intersect(Target, [C6:C1000])
    If pl Is Nothing Then Exit Sub
    With Sheets("Lists")
        For Each c In pl
            Set c2 = .Columns(2).Find(c, LookIn:=xlValues, Lookat:=xlWhole)
            If c2 Is Nothing Then
                Set c2 = .Columns(4).Find(c, LookIn:=xlValues, Lookat:=xlWhole)
                If c2 Is Nothing Then
                    rep = MsgBox("Ajouter à Micro ?", vbQuestion + vbYesNoCancel, "Choix liste Micro/Tel")
                    col = 0
                    If rep = vbYes Then
                        col = 2
                    ElseIf rep = vbNo Then
                        col = 4
                    End If
                    If col > 0 Then
                        .Cells(Rows.Count, col).End(xlUp).Offset(1) = c.Value
                    End If
                End If
            End If
        Next c
    End With
End Sub

Le contrôle s'effectue au moment de l'ajout.

Oui : ajout dans Micro, Non : ajout dans Tel, Annuler : n'ajoute pas

eric

Super merci pour ta réactivité Eric.

ça fonctionne parfaitement bien. par contre, je suis désolé mais j'ai l'impression d'abuser, mais y a t'il une possibilité de faire en sorte qu'il "cherche" la colonne car suivant les extracts qui sont faites, les colonnes ne sont pas au même endroit d'un jour a l'autre

j'ai essayé en début de code de remplacer par:

Dim pl As Range, c As Range, c2 As Range, rep As Long, col As Long, cellfamille As Range
searchcol = "Famille"
Set cellfamille = ActiveSheet.UsedRange.Find(searchcol, , xlValues, xlWhole)
Set pl = Intersect(Target, cellfamille)

Mais ça ne fonctionne pas.

Mais surtout ce qui m'interesse ce serai que dans le msgbox, il indique la valeur trouvée et la question.

encore merci de cette aide précieuse.

edit: bon pour la msgbox c'est bon. j'ai mis

rep = MsgBox("La famille " + c.Value + " est inconnu(e)." & Chr(10) & "Voulez vous l'ajouter?" & Chr(10) & "oui pour micro non pour téléphonie", vbQuestion + vbYesNoCancel, "Famille inconnue")

est ça fonctionne.

Manque plus qu'a trouver pour les colonnes variables. si jamais il n'y a pas d'idée je mettrais en résolu car la principale demande était bien cette requette et cet ajout.

Si c'est dans List il faudrait peut-être qu'elles aient des titres (?!?)

Précise quoi et où

Oui excuse moi ce n'etait pas très clair.

Tout ce qui concerne l'onglet Lists est fixe. Le choix avec la msgbox que tu m'as proposé est parfait et fonctionne a merveille. En fait ce qui est variable est dans l'onglet FILE. Il s'agit de la colonne avec l'intitulé famille qui ici se trouve colonne C mais qui parfois peut se retrouver dans une autre colonne.

replace le début par :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range, c As Range, c2 As Range, rep As Long, col As Long
    Set c = Cells.Find("Famille", LookIn:=xlValues, Lookat:=xlWhole)
    Set pl = Intersect(Target, c.Offset(1).Resize(1000))

eric

Super. c'est exactement ce que je voulais.

Maintenant plus qu'a faire qu'il ne mette plus d'erreur quand que j'efface le contenu de la feuille FILE pour remettre autre chose mais ça je vais m'en occuper.

en tout cas ce qui me génais le plus est résolu.

Je te remercie énormément.

edit: Finalement trouvé en ajoutant

If c Is Nothing Then Exit Sub

juste en dessous du Set c=...

merci encore

Rechercher des sujets similaires à "filtre partir liste ajout element manquant"