Recherche dans 2 listes différentes

Bonjour,

J'aimerai à partir d'une feuille Cas particulier, dans laquelle se trouve nom prénom, nom du cas et date, retranscrire la date à laquelle a eu lieu le cas particulier à partir du nom se trouvant dans une des listes, en VBA svp?

Les recherchesV sont assez compliquées et la mienne plante, est-ce la seule solution?

8classeur1.xlsm (21.50 Ko)

Avec le code (qui ne marche pas ) , ce sera surement mieux.

Sub test()

Dim iligne As Integer
iligne = 2
Dim ligne As Integer
ligne = 2

For iligne = 2 To Feuil2.UsedRange.Rows.Count Step 1

    For ligne = 2 To Feuil1.UsedRange.Rows.Count

        If Feuil2.Cells(iligne, 1).Value = Feuil.Cells(ligne, 1).Value Then
            Feuil2.Cells(iligne, 8).Value = Application.IfError(Application.VLookup(Feuil2.Cells(iligne, 1).Value, Feuil1.Range("A:C"), 3, 0), "")
        End If

    Next

Next
End Sub

Bonjour carmen13

Est-ce que cela correspond à ton souhait de résultat ?

capture 20220608 002

Oui !

Mais à la place de Vrai j'aimerai avoir l'année et que chaque liste reste à sa place

Bonjour carment13

Les vrai/faux c'était juste pour être certain de bien comprendre le résultat escompté !

Pour mettre à la place les années : aucun problème !

Mais que veux-tu dire par ?

chaque liste reste à sa place

...

Voilà pour les dates :

capture 20220608 003

...

Une petite précision (cf figure) et une proposition par formule

capture 20220608 004

=SI(
INDEX('CAS PARTICULIER'!$A$2:$C$4 ; EQUIV(LISTE_B!$G3 ; 'CAS PARTICULIER'!$A$2:$A$4 ; 0); 2 )=H$1

;
INDEX('CAS PARTICULIER'!$A$2:$C$4 ; EQUIV(LISTE_B!$G3 ; 'CAS PARTICULIER'!$A$2:$A$4; 0 ) ; 3 )

;
"rien"
)

en bleu la condition qui se traduit :
Rechercher dans le tableau de l'onglet [CAS PARTICULIER] en colonne 2 (le 2 en italique) le même "nom prénom"

en orange ce qu'il faut faire si la recherche "bleue" est validée
Donc Rechercher (de la même manière) la colonne 3 (le 3 en italique)

en rouge ce qu'il faut faire si la recherche "bleue" n'est pas validée
Donc ne rien

Et la formule est donc :

=SI(INDEX('CAS PARTICULIER'!$A$2:$C$4;EQUIV(LISTE_B!$G3;'CAS PARTICULIER'!$A$2:$A$4;0);2)=H$1;INDEX('CAS PARTICULIER'!$A$2:$C$4;EQUIV(LISTE_B!$G3;'CAS PARTICULIER'!$A$2:$A$4;0);3);"")

Oh merci bcp !!

Bonne soirée à vous.

Mais je n'ai pas vraiment compris où l'appliquer. Est ce que vous pouvez m'expliquer svp?

Bonjour carmen13

Tu dois l'appliquer en-dessous de toutes les cellules de libellés (du cadre rouge - Congés Mat, Arrêt Maladie...) et pour chacun des libelles
Et forcément sur autant de lignes qu'il y a de noms !

PS/ Merci pour les remerciements !

Génial, encore une fois merci beaucoup !!

Bonne journée à vous :)

Je dois mal faire quelque chose puisque ça me produit des NA.

Pourtant les noms et prénoms sont identiques ainsi que le nom des cas particuliers.

Je vous transmets le fichier à nouveau.

8classeur1.xlsm (24.03 Ko)

Bonjour carmen13

Désolé pour ce faux espoir !...

Je viens de regarder ta dernière PJ... Et je me rends compte que je n'ai peut-être pas bien compris ton besoin initial !

Il semblerait que les onglets [Liste_A] et [Liste_B] comportent des noms et prénoms différents ! Est-ce le cas ?

Oui exactement pour le contexte c'est deux listes de salariés présents liste A et liste de salariés sortants liste B. Effectivement il n'y a pas de noms et prénoms similaires.

J'aimerai donc que la feuille CASPARTICULIER soit celle qui lie les deux bases et donc cherche dans les deux.

...

Je crois que je m'embrouille !?

Récapitulons selon ton dernier post !

  1. Les formules doivent bien être placées dans les onglets [Liste A] et [Liste B] !
  2. L'onglet [CAS PARTICULIER] sert de base pour la recherche des salariés dans l'un ou l'autre des onglets [Liste ..] !

1- Exact, après j'essaierai de le faire en VBA dans tous les cas mais c'est ça.

2- Oui c'est ça.

Désolée, c'est vraiment compliqué d'expliquer.

...

Ok ! Donc il faut adapter la formule selon chaque onglet [Liste ..]...

Pour [Liste A] c'est :

=SI(INDEX('CAS PARTICULIER'!$A$2:$C$4;EQUIV(LISTE_A!$G3;'CAS PARTICULIER'!$A$2:$A$4;0);2)=H$1;INDEX('CAS PARTICULIER'!$A$2:$C$4;EQUIV(LISTE_A!$G3;'CAS PARTICULIER'!$A$2:$A$4;0);3);"")

Pour [Liste B] c'est :

=SI(INDEX('CAS PARTICULIER'!$A$2:$C$4;EQUIV(LISTE_B!$G3;'CAS PARTICULIER'!$A$2:$A$4;0);2)=H$1;INDEX('CAS PARTICULIER'!$A$2:$C$4;EQUIV(LISTE_B!$G3;'CAS PARTICULIER'!$A$2:$A$4;0);3);"")

Maintenant, il faut aussi adapter les zones en vert en fonction du nombre de salariés dans [CAS PARTICULIER] !

Tu peux aussi définir une formule nommée qui peut remplacer les zones vertes, par le gestionnaire de noms. Par exemple :

Une formule nommée baseSalaries dont la formule est

=DECALER('CAS PARTICULIER'!L2C1:L2C3;0;0;NBVAL('CAS PARTICULIER'!C1)-1)

Une formule nommée listeSalarie dont la formule est

=DECALER(baseSalaries;0;0;;1)

Les formules deviennent alors plus simples :

=SI(INDEX(baseSalaries;EQUIV(LISTE_A!LC7;listeSalarie;0);2)=L1C;INDEX(baseSalaries;EQUIV(LISTE_A!LC7;listeSalarie;0);3);"")

=SI(INDEX(baseSalaries;EQUIV(LISTE_B!LC7;listeSalarie;0);2)=L1C;INDEX(baseSalaries;EQUIV(LISTE_B!LC7;listeSalarie;0);3);"")

Ca fonctionne merci beaucoup pour la clarté de vos explications !!

Bonjour carmen13

Ca fonctionne merci beaucoup pour la clarté de vos explications !!

Alors ça y est, cette fois nous pouvons crier victoire ?

En tout cas merci pour le compliment, mais c'était un plaisir !

Nous pouvons crier victoire :).

Encore une fois bonne journée à vous.

Rechercher des sujets similaires à "recherche listes differentes"