Recherche sur 2 critères

  • Initiateur de la discussion Initiateur de la discussion LeFab47
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

LeFab47

Guest
Bonjour,

Je cherche à récupérer une liste de noms en fonction de 2 critères (N° de semaine, et valeur "x" pour l'inscription à une séance de formation) pour établir une feuille d'émargement automatique sur une nouvelle feuille.

J'ai essayé avec la fonction index(), mais je débute avec celle-ci, et j'ai un peu de mal, malgré les exemples que j'ai pu voir sur ce forum.

J'ai expliqué mon problème dans le classeur en fichier joint.

Merci d'avance !
 

Pièces jointes

Re : Recherche sur 2 critères

Bonjour LeFab47,

Voici une macro réalisant ton projet. Tu peux la lancer par un bouton de commande ou par un événement de feuille.
Toutefois, je ne comprends pas le phénomène suivant : je dois décaler la référence des lignes par -6 sinon l'extraction des données commence à la ligne de 17 au lieu de 11 (Y'a-t-il un bug dans ton fichier ?)

Code:
Sub trouve()
Dim cl As Byte, deb As Integer, fin As Long

With Sheets("Inscriptions").Rows("7:7")
  Set col = .Find(Sheets("Emargement").Range("C5").Value, LookIn:=xlValues)
  If col Is Nothing Then Exit Sub
  cl = col.Column
  deb = 8
  fin = .Range("C65530").End(xlUp).Row
  For lg = 11 To fin
    .Cells(lg - 6, 1).Select
    If Not IsEmpty(.Cells(lg - 6, cl)) Then
      Cells(deb, 1) = .Cells(lg - 6, 1)
      Cells(deb, 2) = .Cells(lg - 6, 2)
      deb = deb + 1
    End If
  Next
End With

End Sub

Espérant avoir répondu.

Cordialement.
 
Re : Recherche sur 2 critères

Bonjour,

Un essai sur base de formules matricielles :

en A8 :

Code:
=SI(LIGNE()-7>NB.SI(DECALER(Inscriptions!$C$10;1;EQUIV($C$5;
Inscriptions!$C$7:$AA$7;0)-1;100);"x");"";INDEX(Inscriptions!$[COLOR=red]A[/COLOR]$1:$[COLOR=red]A[/COLOR]$110;
PETITE.VALEUR(SI((DECALER(Inscriptions!$C$10;1;EQUIV($C$5;
Inscriptions!$C$7:$AA$7;0)-1;100)="x")*LIGNE(Inscriptions!$A$11:$A$110)>0;
(DECALER(Inscriptions!$C$10;1;EQUIV($C$5;Inscriptions!$C$7:$AA$7;0)-1;100)="x")*
LIGNE(Inscriptions!$A$11:$A$110));LIGNE()-7)))

Remplacer $A$1:$A$110 par $B$1:$B$110 pour B8

Formules matricielles à valider par CTRL + MAJ + ENTREE

Voir le fichier joint

@+

Edit : salut Claude, le temps de préparer et de rédiger, je ne t'avais pas vu passer

@+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
23
Affichages
684
Retour