Formule de recherche multicritère [Excel] - VB/VBA/VBS - Programmation
Marsh Posté le 08-07-2009 à 23:31:31
la fonction find est ton amie
i=1
while onglet1.range("A" & i)<>Empty
onglet1.range("C" & i)=onglet2.range("B1:B1000" ).find(onglet1.range("A" & i)
i=i+1
wend
enfin si j'ai bien compris
Marsh Posté le 09-07-2009 à 07:15:09
Bonjour,
Merci pour ta réponse cependant, elle ne correspond pas a ma demande puisqu'il s'agit d'une macro et non d'un formule.
Quelqu'un d'autre aurait-il une idée ?
Cordialement
Marsh Posté le 09-07-2009 à 09:55:14
il faut que tu procèdes comme tu le fais avec ta cervelle...
(tu peux le découper sur plusieurs cellules dans un premier temps, et ensuite fusionner le tout dans une seule formule plus complexe)
-> il faut déjà que tu isoles la zone des "toto"... ainsi tu vas avoir une plage de cellules sur lesquelles tu pourras ensuite effectuer ta recherche
-> une premère recherche pour trouver ton toto... et ensuite, tu transformes ça en coordonnées de cellules (je sais plus quelle formule tout faite donnes les coordonnées... mais en cherchant un peu, tu vas vite trouver)
-> une deuxième recherche standard en "recherchev" afin de récup la valeur correspondant à ta ligne 1 dans ta liste.
Marsh Posté le 09-07-2009 à 10:26:31
Ce que je ferais moi c'est de rajouter une colonne dans l'onglet 2 qui concatène "toto" et "4062" (concatener())
Et dans le premier, j'utilise un RECHERCHEH()
Le tour est joué.
Marsh Posté le 09-07-2009 à 10:43:21
ah vi, bonne idée ça (je me demande si j'ai pas déjà procédé ainsi pour autre chose d'ailleurs... mais ces temps ci, je fais plus trop d'Excel)
(mais il reste dommage qu'Excel ne propose pas directement cette recherche multicritère... faudrait que je vois pour écrire une fonction qui fasse ça d'ailleurs tiens, un coup où j'aurais du temps)
Marsh Posté le 09-07-2009 à 12:20:00
Merci
Sa me permet deja de produire un fichier valide !! Que du bonheur
Je pourrai par le suite creuser pour arrive a faire une fonction " tout en un "
Encore merci !
Marsh Posté le 12-07-2009 à 07:35:19
Bonjour,
j'ai essayé:
=SOMMEPROD((Feuil2!$A:$A="toto" )*(Feuil2!$B:$B=A2)*Feuil2!$C:$C)
cela devrait fonctionner. Il reste à savoir où tu mets la valeur "toto" pour en faire un cas général si c'est possible.
Cordialement
Marsh Posté le 26-06-2013 à 14:48:08
Malgré que je suis en retard pour cette réponse mais elle peut aide personne pour faire le suive de leur données .
d'abord il faut réorganiser nos donnée ,dans cette cas de créer des tableaux exp :
valeu code Nom
344 4062 TITI exp ajouter
443 4067 TITI exp ajouter
446 4069 TITI exp ajouter
111 4062 TOTO
112 4067 TOTO
113 4069 TOTO
331 331 TATA
332 332 TATA
333 333 TATA
991 991 TITI
992 992 TITI
VALEUR 4062 4067 069 4073 4071
DATE 25/06/2009 29/06/2009 01/07/2009 02/07/2009 06/07/2009
TOTO 111 112 113 0 0
TATA 0 0 0 0 0
TITI 344 443 446 0 0
et puis vous allez créer un tableau dynamique croisé
Nom code Somme de valeur
TATA 996
331 331
332 332
333 333
TITI 3216
991 991
992 992
4062 344
4067 443
4069 446
TOTO 336
4062 111
4067 112
4069 113
Total général 4548
dans cette dernier étape a l'aide de tableau dynamique croisé on créent une formule comme suit :
=SI(TYPE(LIREDONNEESTABCROISDYNAMIQUE("valeur";$M:$M;"code";B$25;"Nom";$A27))=16;0;LIREDONNEESTABCROISDYNAMIQUE("valeur";$M:$M;"code";B$25;"Nom";$A27))
Marsh Posté le 04-07-2013 à 14:19:53
joh280177 > ta réponse en plus d'être fouillie ne me semble pas pertinente... pas du tout besoin d'utiliser un TCD pour répondre.
De plus, plusieurs réponses correctes ont déjà été apportées... quel est le but alors ?
Marsh Posté le 08-07-2009 à 21:20:54
Bonjour,
Dans le cadre de mon travail, je voudrais faire une recherche multicritère, cependant, je dois admettre que c'est carrément plus dur qu'une simple "rechercheV".
Je vous explique la situation :
Sur mon 1er onglet :
-j'ai un truc de ce genre
en ligne 1 => 4062 4067 4069 4073 4071
en ligne 2 =>25.06.09 29.06.09 01.07.09 02.07.09 06.07.09
en ligne 3 => ICI LES VALEURS QUE JE SOUHAITE FAIRE REMONTER
sur mon 2nd onglet :
-j'ai un truc de ce genre
toto 4062 111
toto 4067 112
toto 4069 113
tata 4062 331
tata 4067 332
tata 4069 333
titi 4062 991
titi 4067 992
etc ...
Mon but est de faire remonter de façon automatique sur le 1er onglet les valeurs de ma colonne C de mon 2nd onglet
Pour resumer, je souhaites faire une double recherche, tout d'abord en "disant" dans ma formule que je veux rechercher uniquement que pour la plage "toto"
Si je reprends se que je souhaites avoir, je veux obtenir sa : ( sachant que la plage qui m'intéresse est "toto" )
en ligne 1 => 4062 4067 4069 4073 4071
en ligne 2 =>25.06.09 29.06.09 01.07.09 02.07.09 06.07.09
en ligne 3 => 111 112 113
Enfin, il faut savoir que ma plage "toto" sera toujours en colonne A mais pas forcement toujours sur les meme lignes.
Voila, en espérant avoir été clair dans ma description, je vous remercie par avance de deja avoir pris le temps de me lire.
Cordialement
Message édité par Pirotessa le 09-07-2009 à 07:15:53