Extraire les valeurs identiques en fonction de 2 colonnes

Résolu/Fermé
vernioz - Modifié par vernioz le 28/10/2014 à 11:06
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 28 oct. 2014 à 12:09
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

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
28 oct. 2014 à 11:45
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