Croisement de données sous Excel

Bonjour,

J'ai deux feuilles excel

dans la première feuille des noms et des activités en très grand nombre

dans la seconde feuille une liste plus courte de noms ( une partie des noms de la première feuille de données) et de métiers.

Mon objectif de comparer les deux fichiers afin que les métiers se mettent automatiquement dans la feuille 1 dès qu'il reconnait le même nom.

J'ai plus de 1000 noms à comparer avec une liste plus grande de 6000 noms . à la main cela me parait très fastidieux

je vous remercie par avance pour vos retours

cordialement

Bonjour et Bienvenue sur XLP,

en D2,

=SIERREUR(INDEX('données 2'!C$2:C$4;EQUIV(A2&B2;'données 2'!A$2:A$4&'données 2'!B$2:B$4;0));"")

@ valider par Ctrl+Maj+Entree

@ tirer vers le bas

@ + +

Bonjour daudey, bonjour R@chid,

une proposition en VBA en pièce jointe... à tester

PS : est-il normal que le dernier caractère du nom de famille soit systématiquement un espace ?

Sub metiers()
Dim Tablo As Variant, derLig As Long, myRange As Range, myReturn As Range, aa As String

Application.ScreenUpdating = False

With Sheets("données 1")
derLig = .Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To derLig
        Set myRange = Sheets("données 2").Columns(1).Find(.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole)
        If Not myRange Is Nothing Then
            Set myReturn = myRange
            aa = myRange & myRange.Offset(, 1)
            If UCase(aa) = UCase(.Cells(i, 1) & .Cells(i, 2)) Then
                .Cells(i, 4) = myRange.Offset(, 2)
            Else
                Do
                Set myRange = Sheets("données 2").Columns(1).FindNext(myRange)
                    aa = myRange & myRange.Offset(, 1)
                        If UCase(aa) = UCase(.Cells(i, 1) & .Cells(i, 2)) Then
                            .Cells(i, 4) = myRange.Offset(, 2)
                        End If
                Loop While Not myRange Is Nothing And myRange <> myReturn
            End If

        End If

    Next i

End With

Application.ScreenUpdating = True

End Sub

merci beaucoup

cela fonctionne parfaitement

Rechercher des sujets similaires à "croisement donnees"