Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Recherche en ligne dans matrice et ramener cellule de la même ligne

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 !

FranckyNC

XLDnaute Nouveau
Bonjour tout le monde,

Comment faire, via formule, pour effectuer une recherche comme suit :
1. Tableau 1 contient 50 en dans cellule I2
2. Matrice est fait comme ça en ligne
Sem1 (col F)Sem2 (col G)Sem3 (col H)Sem4 (col I)Sem5 (col J)Mois (col K)
50​
51​
52​
01​
01
02​
03​
04​
05​
06​
02
07​
08​
09​
10​
03
11​
12​
13​
14​
04
L'objectif est de ramener le contenu de $K2 dans la cellule du tableau 1 dans laquelle j'ai tapé la formule.
Ici, je cherche la valeur 50 sur la plage F2:J2 si trouvé alors valeur de K2 (soit 01)

Si la cellule du tableau 1 en colonne I contient 08 alors le résultat attendu serait 03 (soit le contenu de la colonne K et de la ligne 3)

Est-ce possible via une formule? Ou faut-il le faire via VBA?

Merci d'avance des réponses apportées.
Franck
 
Bonjour Franck, le fil,

bienvenue sur le site XLD ! 🙂

ton fichier en retour ; formule en B2 :

=GetMois([@[N° Semaine]])



1ème feuille "DATA" :



noter que tous les nombres en A2:B5 sont sur 2 chiffres ; de plus, ma formule personnalisée GetMois() retourne « ? » si le n° de la semaine NumSem n'est pas trouvé. 🙂 c'est pour ça que le type du retour est Variant au lieu de Byte ; remarque : un Byte (plage de valeurs entre 0 et 255) aurait amplement suffit pour un n° de mois de 1 à 12. (janvier à décembre)



2ème feuille "Matrice" :



là aussi, tous les nombres sont sur 2 chiffres.



code VBA de Module1 :

VB:
Option Explicit

Function GetMois(NumSem As Byte) As Variant
  Dim cel As Range
  Set cel = Range("Tableau1[[Sem1]:[Sem5]]").Find(NumSem, , -4163, 1, 1)
  If cel Is Nothing Then GetMois = "?" _
    Else GetMois = Worksheets("Matrice").Cells(cel.Row, 11)
End Function

soan
 

Pièces jointes

Dernière édition:
Bonjour,

Une solution avec index et agregat :
=SIERREUR(INDEX(Tableau1[Mois
(num)];AGREGAT(15;6;LIGNE(Tableau1)-LIGNE(Tableau1[#En-têtes])/(Tableau1[[Sem1]:[Sem5]]=[@[Numéro de semaine]]);1));"non trouvé")
N'a pas besoin de validation matricielle.

Remarques :
Il y a un saut de ligne dans le nom de la colonne Mois (num)
le numéros de mois sont des textes.

Cordialement
 

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

Discussions similaires

Réponses
20
Affichages
827
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…