Une rechercheV un peu complexe !
Fermé
olivier
-
12 mai 2015 à 15:29
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 15 mai 2015 à 11:07
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 15 mai 2015 à 11:07
A voir également:
- Une rechercheV un peu complexe !
- Recherchev dans un tableau croisé dynamique - Forum Excel
- Recherchev texte - Forum Excel
- Si(recherchev vrai alors) ✓ - Forum Excel
- Recherchev ne renvoie pas la bonne valeur ✓ - Forum Excel
- Recherchev si contient - Forum Excel
6 réponses
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
12 mai 2015 à 15:39
12 mai 2015 à 15:39
bonjour,
Si j'ai bien compris, il suffit de nommer feuille Base chaque groupe de pays, exemple B2:B7 nommée ALL, B8:B13 nommée ANG etc ...
la formule devient feuille ALL D3
=RECHERCHEV(B2;ALL;1;0)
pour éviter le message d'erreur #NA complète la formule
=SIERREUR(RECHERCHEV(B2;ALL;1;0);"")
et incrémente vers le bas idem pour les autres onglets
Si j'ai bien compris, il suffit de nommer feuille Base chaque groupe de pays, exemple B2:B7 nommée ALL, B8:B13 nommée ANG etc ...
la formule devient feuille ALL D3
=RECHERCHEV(B2;ALL;1;0)
pour éviter le message d'erreur #NA complète la formule
=SIERREUR(RECHERCHEV(B2;ALL;1;0);"")
et incrémente vers le bas idem pour les autres onglets
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
Modifié par Mike-31 le 12/05/2015 à 17:39
Modifié par Mike-31 le 12/05/2015 à 17:39
Re,
Ok pas très compliqué, mais la je n'ai pas le temps de te décrire la formule maintenant, je t'explique ça dans la soirée
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Ok pas très compliqué, mais la je n'ai pas le temps de te décrire la formule maintenant, je t'explique ça dans la soirée
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
Modifié par Mike-31 le 12/05/2015 à 21:19
Modifié par Mike-31 le 12/05/2015 à 21:19
Re,
voila, tu vas essayer de faire seul, si tu n'y arrives pas je te retournerais ton fichier. feuille Base, sélectionne toute la colonne K en cliquant sur l'entête K et nomme la, dans mon exemple Lign
en K2 colle cette formule
et incrémente la vers le bas
ensuite feuille ALL en D2 colle cette formule
=RECHERCHEV(B2;INDIRECT("Base!"&"B"&PETITE.VALEUR(Lign;1)&":"&"B"&PETITE.VALEUR(Lign;2));1;0)
et incrémente la vers le bas
en D2 feuille ANG
colle la même formule mais il faudra modifier ,PETITE.VALEUR(Lign;1) par PETITE.VALEUR(Lign;3)
et PETITE.VALEUR(Lign;2) par PETITE.VALEUR(Lign;4)
dans la feuille BLG en D2 modifier PETITE.VALEUR(Lign;5) et modifier PETITE.VALEUR(Lign;6)
etc ... en espérant que l'ordre ALL, ANG, BLG etc ... sont toujours dans cet ordre
explication des formules
=SI(ET(A2=A1;A2=A3);"";LIGNE()) je recherche le changement de valeur colonne A et si la valeur change j'affiche l'index ligne
ensuite en D2 cet la bonne vieille formule RECHERCHEV(B2;la matrice;1;0) mais je vais déterminer les bornes de chaque matrice en recherchant le valeurs croissantes d'index ligne et cette formule va m'afficher la première petite valeur ="B"&PETITE.VALEUR(Lign;1)
cette deuxième la deuxième petite valeur ="B"&PETITE.VALEUR(Lign;2)
soit dans l'exemple B2 et B7 ce qui constitue les bornes de ma première matrice et comme il s'agit d'adresse de cellules constituées il faut l'encadrer d'un INDIRECT
ce qui donne
INDIRECT("Base!"&"B"&PETITE.VALEUR(Lign;1)&":"&"B"&PETITE.VALEUR(Lign;2))
ce qu'Excel traduit
=RECHERCHEV(B2;Base!B2:B7;1;0)
tu as remarqué que lorsque la valeur n'existe pas Excel affiche un message d'erreur #NA pour éviter cela en D2 colle plutôt cette formule qui gèrera ce problème et ton tableau sera plus propre
à toi de jouer
--
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
voila, tu vas essayer de faire seul, si tu n'y arrives pas je te retournerais ton fichier. feuille Base, sélectionne toute la colonne K en cliquant sur l'entête K et nomme la, dans mon exemple Lign
en K2 colle cette formule
=SI(ET(A2=A1;A2=A3);"";LIGNE())
et incrémente la vers le bas
ensuite feuille ALL en D2 colle cette formule
=RECHERCHEV(B2;INDIRECT("Base!"&"B"&PETITE.VALEUR(Lign;1)&":"&"B"&PETITE.VALEUR(Lign;2));1;0)
et incrémente la vers le bas
en D2 feuille ANG
colle la même formule mais il faudra modifier ,PETITE.VALEUR(Lign;1) par PETITE.VALEUR(Lign;3)
et PETITE.VALEUR(Lign;2) par PETITE.VALEUR(Lign;4)
dans la feuille BLG en D2 modifier PETITE.VALEUR(Lign;5) et modifier PETITE.VALEUR(Lign;6)
etc ... en espérant que l'ordre ALL, ANG, BLG etc ... sont toujours dans cet ordre
explication des formules
=SI(ET(A2=A1;A2=A3);"";LIGNE()) je recherche le changement de valeur colonne A et si la valeur change j'affiche l'index ligne
ensuite en D2 cet la bonne vieille formule RECHERCHEV(B2;la matrice;1;0) mais je vais déterminer les bornes de chaque matrice en recherchant le valeurs croissantes d'index ligne et cette formule va m'afficher la première petite valeur ="B"&PETITE.VALEUR(Lign;1)
cette deuxième la deuxième petite valeur ="B"&PETITE.VALEUR(Lign;2)
soit dans l'exemple B2 et B7 ce qui constitue les bornes de ma première matrice et comme il s'agit d'adresse de cellules constituées il faut l'encadrer d'un INDIRECT
ce qui donne
INDIRECT("Base!"&"B"&PETITE.VALEUR(Lign;1)&":"&"B"&PETITE.VALEUR(Lign;2))
ce qu'Excel traduit
=RECHERCHEV(B2;Base!B2:B7;1;0)
tu as remarqué que lorsque la valeur n'existe pas Excel affiche un message d'erreur #NA pour éviter cela en D2 colle plutôt cette formule qui gèrera ce problème et ton tableau sera plus propre
=SIERREUR(RECHERCHEV(B2;INDIRECT("Base!"&"B"&PETITE.VALEUR(Lign;1)&":"&"B"&PETITE.VALEUR(Lign;2));1;0);"")
à toi de jouer
--
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Merci beaucoup Mike, ça fonctionne parfaitement pour les onglets et je vais déjà économiser beaucoup de temps. Tu as été très clair. Et ton explication m'a permis de comprendre ta démarche.
Enfin, aurais-tu une solution qui simplifie la première RechercheV (celle de la base) ? Pour que la "table des matrices" s'adaptent automatiquement à l'onglet correspondant.
Cordialement
Enfin, aurais-tu une solution qui simplifie la première RechercheV (celle de la base) ? Pour que la "table des matrices" s'adaptent automatiquement à l'onglet correspondant.
Cordialement
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
Modifié par Mike-31 le 13/05/2015 à 13:46
Modifié par Mike-31 le 13/05/2015 à 13:46
Re,
Dans mes explications j'ai omis de te préciser que la colonne K feuille Base peut être masquée et dans mon exemple j'ai pris la colonne K mais peut être n'importe quelle colonne du moment que tu nommes cette colonne.
Ta dernière demande, feuille Base, tu peux éventuellement insérer plus de lignes que nécessaire dans chaque Cde PAYS et en cellule D2 tu colles cette formule
=RECHERCHEV(B2;INDIRECT("'" & A2 & "'!B:B");1;0)
mais comme mes explications précédentes tu peux avoir un message d'erreur #NA dans le cas de cellule non renseignée ou valeurs erronées je te propose de mettre en D2 cette formule avec gestion d'erreur
et tu l'incrémentes vers le bas
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Dans mes explications j'ai omis de te préciser que la colonne K feuille Base peut être masquée et dans mon exemple j'ai pris la colonne K mais peut être n'importe quelle colonne du moment que tu nommes cette colonne.
Ta dernière demande, feuille Base, tu peux éventuellement insérer plus de lignes que nécessaire dans chaque Cde PAYS et en cellule D2 tu colles cette formule
=RECHERCHEV(B2;INDIRECT("'" & A2 & "'!B:B");1;0)
mais comme mes explications précédentes tu peux avoir un message d'erreur #NA dans le cas de cellule non renseignée ou valeurs erronées je te propose de mettre en D2 cette formule avec gestion d'erreur
=SIERREUR(RECHERCHEV(B2;INDIRECT("'" & A2 & "'!B:B");1;0);"")
et tu l'incrémentes vers le bas
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
14 mai 2015 à 12:09
14 mai 2015 à 12:09
Re,
Alors ou en est on ?
Alors ou en est on ?
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
15 mai 2015 à 11:07
15 mai 2015 à 11:07
Re,
je ne comprends pas très bien "simplement parce que le fichier est une extraction avec un nombre de lignes aléatoires"
que veux tu dire, que par exemple ALL est divisé en plusieurs plages sur le fichier cible ce qui génère plusieurs plages ALL
c'est ça !
je ne comprends pas très bien "simplement parce que le fichier est une extraction avec un nombre de lignes aléatoires"
que veux tu dire, que par exemple ALL est divisé en plusieurs plages sur le fichier cible ce qui génère plusieurs plages ALL
c'est ça !
12 mai 2015 à 15:49
J'aurai dû préciser que chaque semaine, j'ai des nouvelles listes avec un nombre d'entrées par pays aléatoires.
(Mes trois premières colonnes proviennent d'une extraction)
Je souhaite que mon "code pays" soit automatiquement celui de la ligne et que ma RechercheV analyse l'onglet correspondant.