Signaler

Obtenir la position d'un élement dans un tableau à 2 dimensions [Résolu]

Posez votre question andrean0102 15Messages postés vendredi 31 mai 2013Date d'inscription 22 novembre 2016 Dernière intervention - Dernière réponse le 22 nov. 2016 à 11:22
Bonjour à tous,

Je cherche à obtenir via une formule (exit VBA) la position exacte d'un élement qui se trouve dans un tableau à 2 dimensions.

Par exemple, si j'ai ce tableau en A1-C3:

1-2-3
4-5-6
7-8-9

et que je recherche 5 j'aimerais obtenir comme résultat B2.

Je pense que j'aurai ma réponse grâce aux formules matricielles mais je ne les maîtrise pas.

Merci d'avance,

Bàv
Afficher la suite 
Utile
+0
moins plus
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;)

Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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

Ajouter un commentaire
Utile
+0
moins plus
ç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,
Vaucluse 18317Messages postés lundi 23 juillet 2007Date d'inscription ContributeurStatut 9 décembre 2016 Dernière intervention - 22 nov. 2016 à 11:22
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
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !