Obtenir la position d'un élement dans un tableau à 2 dimensions
Résolu/Fermé
andrean0102
Messages postés
15
Date d'inscription
vendredi 31 mai 2013
Statut
Membre
Dernière intervention
22 novembre 2016
-
21 nov. 2016 à 15:47
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 22 nov. 2016 à 11:22
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 22 nov. 2016 à 11:22
A voir également:
- Obtenir la position d'un élement dans un tableau à 2 dimensions
- Comment faire un tableau - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
4 réponses
PHILOU10120
Messages postés
6411
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
5 mars 2025
814
21 nov. 2016 à 16:12
21 nov. 2016 à 16:12
Bonjour Andrean0102
En prenant vos critères
Mettre en E1 le nombre cherché
en E2 cette formule
=ADRESSE(SIERREUR(EQUIV($E$1;$A$1:$A$3;0);0)+SIERREUR(EQUIV($E$1;$B$1:$B$3;0);0)+SIERREUR(EQUIV($E$1;$C$1:$C$3;0);0);SIERREUR(EQUIV($E$1;$A$1:$C$1;0);0)+SIERREUR(EQUIV($E$1;$A$2:$C$2;0);0)+SIERREUR(EQUIV($E$1;$A$3:$C$3;0);0);1;1;)
En prenant vos critères
Mettre en E1 le nombre cherché
en E2 cette formule
=ADRESSE(SIERREUR(EQUIV($E$1;$A$1:$A$3;0);0)+SIERREUR(EQUIV($E$1;$B$1:$B$3;0);0)+SIERREUR(EQUIV($E$1;$C$1:$C$3;0);0);SIERREUR(EQUIV($E$1;$A$1:$C$1;0);0)+SIERREUR(EQUIV($E$1;$A$2:$C$2;0);0)+SIERREUR(EQUIV($E$1;$A$3:$C$3;0);0);1;1;)
andrean0102
Messages postés
15
Date d'inscription
vendredi 31 mai 2013
Statut
Membre
Dernière intervention
22 novembre 2016
22 nov. 2016 à 09:16
22 nov. 2016 à 09:16
Merci pour cette réponse. Seulement, que faire si la table compte 100 colonnes/100 lignes? voir plus?
Dans ce cas-ci, il faut tester ligne par ligne puis colonne par colonne, ce qui n'est pas possible dans des bases de données plus importantes.
Merci d'avance,
Bàv
Dans ce cas-ci, il faut tester ligne par ligne puis colonne par colonne, ce qui n'est pas possible dans des bases de données plus importantes.
Merci d'avance,
Bàv
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 425
Modifié par Vaucluse le 22/11/2016 à 09:56
Modifié par Vaucluse le 22/11/2016 à 09:56
Bonjour
(salut Philou)
pour un champ de valeur de B2 à CW100 et sous réserve que la valeur cherchée (nombre ou texte)ne s'y trouve qu''une seule fois
valeur cherchée en CX1
=ADRESSE(SOMMEPROD(($A$1:$CW$100=$CX$1)*(LIGNE($A$1:$A$100)));SOMMEPROD(($A$1:$CW$100=$CX$1)*(COLONNE($A$1:$CW$1))))
notez que le champ de recherche commencent sur la cellule A1 et les champs lignes/colonnes commencent sur la cellule A1
$A$1:$C$100 / $A$1:$A$100 / $A$1:$CW$1
(et pas sur le départ du tableau de valeur qui commence en B2)
si vous ne pouvez pas débuter sur cette cellule A1, il faut rajouter une correction aux résultats de chaque somme prod pour trouver le bon N° de ligne ou colonne
vous pouvez même si besoin inclure le nom de la feuille dans le résultat
=ADRESSE(SOMMEPROD(($A$1:$CW$100=$CX$1)*(LIGNE($A$1:$A$100)));SOMMEPROD(($A$1:$CW$100=$CX$1)*(COLONNE($A$1:$CW$1)));;;"nom feuille")
crdlmnt
La qualité de la réponse dépend surtout de la clarté de la question, merci!
(salut Philou)
pour un champ de valeur de B2 à CW100 et sous réserve que la valeur cherchée (nombre ou texte)ne s'y trouve qu''une seule fois
valeur cherchée en CX1
=ADRESSE(SOMMEPROD(($A$1:$CW$100=$CX$1)*(LIGNE($A$1:$A$100)));SOMMEPROD(($A$1:$CW$100=$CX$1)*(COLONNE($A$1:$CW$1))))
notez que le champ de recherche commencent sur la cellule A1 et les champs lignes/colonnes commencent sur la cellule A1
$A$1:$C$100 / $A$1:$A$100 / $A$1:$CW$1
(et pas sur le départ du tableau de valeur qui commence en B2)
si vous ne pouvez pas débuter sur cette cellule A1, il faut rajouter une correction aux résultats de chaque somme prod pour trouver le bon N° de ligne ou colonne
vous pouvez même si besoin inclure le nom de la feuille dans le résultat
=ADRESSE(SOMMEPROD(($A$1:$CW$100=$CX$1)*(LIGNE($A$1:$A$100)));SOMMEPROD(($A$1:$CW$100=$CX$1)*(COLONNE($A$1:$CW$1)));;;"nom feuille")
crdlmnt
La qualité de la réponse dépend surtout de la clarté de la question, merci!
andrean0102
Messages postés
15
Date d'inscription
vendredi 31 mai 2013
Statut
Membre
Dernière intervention
22 novembre 2016
22 nov. 2016 à 10:37
22 nov. 2016 à 10:37
ça fonctionne super, merci beaucoup.
Par hasard, avez-vous le temps d'expliquer en détails la formule?
Je ne parviens pas à comprendre le principe du SOMMEPROD(($A$1:$CW$100=$CX$1)*(LIGNE($A$1:$A$100)) pour identifier la ligne
et le SOMMEPROD(($A$1:$CW$100=$CX$1)*(COLONNE($A$1:$CW$1)) pour identifier la colonne.
Merci d'avance,
Par hasard, avez-vous le temps d'expliquer en détails la formule?
Je ne parviens pas à comprendre le principe du SOMMEPROD(($A$1:$CW$100=$CX$1)*(LIGNE($A$1:$A$100)) pour identifier la ligne
et le SOMMEPROD(($A$1:$CW$100=$CX$1)*(COLONNE($A$1:$CW$1)) pour identifier la colonne.
Merci d'avance,
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 425
Modifié par Vaucluse le 22/11/2016 à 11:25
Modifié par Vaucluse le 22/11/2016 à 11:25
Re
SOMMEPROD va chercher dans le tableau la valeur A1:CW100 la valeur inscrite en CX1
c'est la fonction du premier item ($A$1:$CW$100=$CX$1)
et va donc affecter 1 à ce qu'elle trouve, pour le multiplier avec le second item qui, lui correspond aux N° de lignes ou de colonnes dans la feuille de ligne 1 à Ligne 100 donc 1à 100 et de colonne A à CW
le résdultat est donc 1*par le N° de ligne ou de colonne où se trouve la valeur
le code ADRESSE remonte l'ensemble
bien entendu, cette solution suppose que vous n'avez pas deux fois la même valeur, sinon la fonction multiplie le nombre de fois où se trouve la valeur par le cumul des lignes trouvées!!
crdlmnt
SOMMEPROD va chercher dans le tableau la valeur A1:CW100 la valeur inscrite en CX1
c'est la fonction du premier item ($A$1:$CW$100=$CX$1)
et va donc affecter 1 à ce qu'elle trouve, pour le multiplier avec le second item qui, lui correspond aux N° de lignes ou de colonnes dans la feuille de ligne 1 à Ligne 100 donc 1à 100 et de colonne A à CW
le résdultat est donc 1*par le N° de ligne ou de colonne où se trouve la valeur
le code ADRESSE remonte l'ensemble
bien entendu, cette solution suppose que vous n'avez pas deux fois la même valeur, sinon la fonction multiplie le nombre de fois où se trouve la valeur par le cumul des lignes trouvées!!
crdlmnt