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