Macro permettant de comparer les données de 3 feuilles à une feuille source

Bonjour,

Je vous explique mon souci. Dans un même classeur:

J'ai 3 feuilles de données nommées respectivement "Feuil1" "Feuil2" "Feuil3" contenant les informations sur les employés.

J'ai une feuille "source" comportant les données des employés cadres.

Je voudrais comparer les colonnes "Matricule" des feuilles "Feuil1" "Feuil2" "Feuil3" à la colonne matricule de la feuille source. Si le contenu existe dans la feuille "source" alors afficher dans la feuille "Récap" les colonnes Nom, Prénom, Matricule et Récap correspondantes de la feuille source.

Avant de s'éxécuter la macro doit effacer tout le contenu de la zone de la feuille "Récap" dans laquelle les résultats seront affichés. Si possible les afficher par ordre alphaphétique des noms.

Je ne sais pas si mon problème est bien expliqué.

Je vous joins un fichier exemple.

5test.xlsx (11.45 Ko)

Merci d'avance :)

Bonjour

Sans données dans votre fichier c'est moins facile d'être sur de la réponse ci-dessous. MAis à tester

Sub test()

Dim j As Integer, i As Integer, lig As Integer, dlg As Integer
With Sheets("Récap")
    dlg = .Range("C" & .Rows.Count).End(xlUp).Row
    If dlg = 1 Then dlg = 2
    .Range("A2:F" & dlg).ClearContents
    dlg = 0
End With
With Sheets("Source")
    For j = .Range("C" & .Rows.Count).End(xlUp).Row To 2 Step -1
        For i = 1 To 3
            On Error Resume Next
            lig = Sheets("Feuil" & i).Range("C:C").Find(.Range("C" & j), LookIn:=xlValues, lookat:=xlWhole).Row
            If lig > 0 Then
                dlg = Sheets("Feuil" & i).Range("C" & Sheets("Feuil" & i).Rows.Count).End(xlUp).Row + 1
                .Range("A" & i & ":F" & i).Copy Sheets("récap").Range("A" & dlg)
            End If
        Next i
    Next j
End With
End Sub

Cordialement

Merci beaucoup Dan,

Je le teste et je reviens vers toi :)

Comment je peux faire pour changer dans le code les noms des différentes feuilles si elles s'appelaient plutot X Y et Z et nom Feuil1 Feuil 2 Feuil3?

Parce que ta ligne recherche le nom de la feuille en fonction de l'indice si j'ai bien compris.

Merci d'avance

Parce que ta ligne recherche le nom de la feuille en fonction de l'indice si j'ai bien compris.

Exact.

Pour changer le mieux est de mettre un nom d'onglet identique avec un indice de 1 à 3 (sans espace entre le nom de la feuille et l'indice). puis changer le nom "feuil" par le nom réel de l'onglet.

Cordialement

Merci.

Mais les données concernent les départements différents donc idéalement les feuilles devraient contenir les noms des départements. (Méca, Elec, AUto) Mais si c'est l'unique option je vais me débrouiller avec.

Merci

Vous avez combien de départements dans votre fichier ? 3 ?

Ou au pire serait-il possible de m'envoyer une ligne de code en considérant qu'on a uniquement une feuille "Feuil1" et non 3 mais avec la meme procédure de recherche?

Oui j'ai 3 départements

Lorsque vous allez dans VBA, à gauche vous avez une fenetre"Project VBA". Dans le dossier "Microsoft excel Objects", vous verrez le nom de vos feuilles entre parenthèses.

Juste avant ces parenthèses, vous avez un nom comme ceci Feuil1, feuil2... Pouvez vous me donner le nom qui se trouve en regard du nom des feuilles de département. Vous pouvez me faire une image de cela aussi

Rechercher des sujets similaires à "macro permettant comparer donnees feuilles feuille source"