Extraire les valeurs identiques en fonction de 2 colonnes

Résolu
vernioz -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

Voilà, après plusieurs recherche je n'ai pas réussi à trouver de solutions. J'ai un tableau qui se présente comme ceci:
colonne 1 colonne 2
fournisseur 1 site A
fournisseur 2 Site B
fournisseur 2 Site A
fournisseur 2 Site D
fournisseur 3 Site C
fournisseur 3 Site A
fournisseur 4 Site B
fournisseur 5 Site A
fournisseur 5 Site B

je cherche à mettre en colonne 3 la liste des fournisseurs communs aux sites A et B. Sur l'exemple ci-dessus, je derais donc retrouver le fournisseur 2 et 5.

Avez-vous une idée de la façon dont je pourrais faire cela?

Merci d'avance :)

4 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bon.
    Par une macro, fonction personnalisée :

    création :
    Depuis le classeur concerné :
    1- Alt + F11
    2- Insertion/Module
    3- Copiez-collez ce code :
    Function Fourn_By_Site(Plage As Range, Site1 As String, Site2 As String, Rang As Integer) As String
    Dim Cel As Range, Liste() As String, dico As Object, i As Long
    
    Set dico = CreateObject("Scripting.Dictionary")
    For Each Cel In Plage
        If UCase(Cel.Offset(0, 1)) = UCase(Site1) Or UCase(Cel.Offset(0, 1)) = UCase(Site2) Then
            If Not dico.Exists(Cel.Value) Then
                dico(Cel.Value) = UCase(Cel.Offset(0, 1))
            ElseIf dico(Cel.Value) <> UCase(Cel.Offset(0, 1)) Then
                ReDim Preserve Liste(i)
                Liste(i) = Cel.Value
                i = i + 1
            End If
        End If
    Next
    Fourn_By_Site = Liste(Rang - 1)
    End Function

    4- fermez la fenêtre VBA

    Utilisation :
    Depuis votre feuille, dans la cellule C1, saisir la formule :
    =Fourn_By_Site(A1:A9;"Site A";"Site B";LIGNE())

    Formule à étirer vers le bas de la colonne C.

    Amélioration possible :
    Empêcher l'affichage des #VALEURS le cas échéant...
    1