XL 2010 Récupérer des données dans des onglets selon un critère

Sissou71

XLDnaute Occasionnel
Bonjour,

Dans un onglet je mentionne un critère. Ce critère détermine l'onglet dans lequel je dois aller chercher ce dont j'ai besoin.
Un fichier exemple ci-joint, j'ai un onglet "Commande" dans lequel je mentionne le critère "Fruits" et je veux qu'il aille chercher dans l'onglet "Fruits" les données dont la colonne "Commande" est à "O".

Quelqu'un saurait-il m'aider à trouver comment faire ?
Merci à vous
Cécile
 

Pièces jointes

  • Paniers annuels.xlsm
    79.1 KB · Affichages: 17

Sissou71

XLDnaute Occasionnel
Bonjour Bcharef,
Merci pour ton retour. Ce qu'il me faut dans l'onglet Commande ce sont seulement les éléments d'un onglet avec les données pour lesquelles la colonne Commande = O. Ton fichier est super mais il prend toutes les données de l'onglet de référence.
Bonne journée
 

Sissou71

XLDnaute Occasionnel
Jocelyn,

Peux-tu me dire dans la formule matricielle la partie qui va chercher l'onglet correspondant au critère ?
j'essaye de comprendre la formule pour apprendre et je ne comprends pas la partie INDIRECT($B$1&"!A2") a quoi fait-elle référence ?
Merci pour ton aide
Cécile
 

Jocelyn

XLDnaute Barbatruc
re,

C'est pas vraiment mon fort les explications mais bon je vais essayer

Alors cette partie de formule INDIRECT($B$1&"!A2") toute seulle ne sert a rien pour quelle fonctionne dans sa globalité il aurait falut écrire INDIRECT($B$1&"!A:A") pour dire que l'index recherché dans la feuille dont le nom apparait en B1 et Colonne A dans une matricielle travailler sur un colonne entiere va prendre un temps fou

Alors je travaille uniquement sur la plage de cellule qui contient des donnée pour cela l'indirect est intercaler dans la fonction décaler DECALER(INDIRECT($B$1&"!A2");;;NBVAL(INDIRECT($B$1&"!A:A"))-1) ce qui rend la plage de recherche dynamique

ici INDIRECT($B$1&"!A2") permet de déterminer le début de la plage de recherche et cette partie NBVAL(INDIRECT($B$1&"!A:A"))-1 le nombre de ligne a prendre en compte

en suite pour retrouver les O on décale tout cela de 3 colonne ce qui donne DECALER(INDIRECT($B$1&"!A2");;3;NBVAL(INDIRECT($B$1&"!A:A"))-1)="O"

voila si tu as besoin de plus d'info dis le

Cordialement
 

Sissou71

XLDnaute Occasionnel
Jocelyn,
Si tu as encore quelques minutes à m'accorder... Je pensais avoir compris mais apparemment pas vraiment...
Je m'explique, dans mon fichier original j'ai d'autres colonnes donc dans la formule de la 1ere colonne, je remplace le chiffre en rouge ci-dessous par le numero de ma colonne :
=SIERREUR(INDEX(DECALER(INDIRECT($B$1&"!A2");;;NBVAL(INDIRECT($B$1&"!A:A"))-1);PETITE.VALEUR(SI(DECALER(INDIRECT($B$1&"!A2");;3;NBVAL(INDIRECT($B$1&"!A:A"))-1)="O";LIGNE(DECALER(INDIRECT($B$1&"!A2");;;NBVAL(INDIRECT($B$1&"!A:A"))-1))-1);LIGNES($1:1)));"")

Et dans les colonnes suivantes je modifie :
=SIERREUR(INDEX(DECALER(INDIRECT($B$1&"!A2");;1;NBVAL(INDIRECT($B$1&"!A:A"))-1);PETITE.VALEUR(SI(DECALER(INDIRECT($B$1&"!A2");;3;NBVAL(INDIRECT($B$1&"!A:A"))-1)="O";LIGNE(DECALER(INDIRECT($B$1&"!A2");;;NBVAL(INDIRECT($B$1&"!A:A"))-1))-1);LIGNES($1:1)));"")

Je fais CRTL+MAJ+Entrée pour la formule matricielles mais mes données sont vides.
Qu'est-ce que je ne vois pas ?
Encore merci à toi
Cécile
 

Jocelyn

XLDnaute Barbatruc
re,

Tu démarre en A2 de la feuille x ok si la colonne contenant le "O qui sert de critere se trouve en colonne par exemple G il faudra remplacer le par 6 et non pas par 7 qui est le numéro de la colonne car la colonne G se trouve 6 colonnes plus loin que la colonne A

pour la modification de la valeur 1 dans la premiere partie de la formule si la valeur recherchée est trois colonne plus loin Soit colonne D alors metre 3 et non 4 numéro de la colonne (toujours le nombre de colonne de décalage et pas le numéro de colonne, de plus dans cette partie elle fait toujours référence au fameux critère "O" donc tu auras suivant l'exemple de la colonne G toujours la valeur 6 a la place du 3

Voila j'espère que ce complément d'explication te permetras de tout mettre en ordre autrement n'hésites pas.

Cordialement

EDIT mon 2 eme paragraphe est incompréhensible ca doit etre mieux maintenant (je préfere vraiment faire la formule que l'expliquée :mad:;))
 
Dernière édition:

Sissou71

XLDnaute Occasionnel
Merci, tes explications me confirment bien ce que j'avais compris mais quand je fais les changements dans mon fichier et les bons au vu de tes explications complémentaires, excel met vide alors qu'il devrait trouver des données. Je pense qu'il y a un truc évident que je ne vois pas mais que je vais trouver à un moment ;)
 

Sissou71

XLDnaute Occasionnel
J'ai trouvé ! mes vrais onglets portent des noms qui comportent un espace et ou un caractère de tiret et ca ne fonctionne pas pour ca. Je peux changer le nom de mes onglets donc je vais les changer.
Encore merci beaucoup
Cécile
 

Jocelyn

XLDnaute Barbatruc
re,

pour complété si tu as des noms d'onglets avec des espaces il suffit de modifier les indirects de cette façon

celui-ci INDIRECT($B$1&"!A2") par INDIRECT("'"&$B$1&"'!A2")

et celui-ci INDIRECT($B$1&"!A:A") par INDIRECT("'"&$B$1&"'!A:A")

voir le fichier joint j'ais modifié le nom de l'onglet fruit en "fruit 1" pour l'exemple

cordialement
 

Pièces jointes

  • Paniers annuels (1).xlsm
    80.1 KB · Affichages: 17

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 898
Membres
101 834
dernier inscrit
Jeremy06510