J'ai une solution qui n'utilise pas VBA, mais c'est assez compliqué. Cela implique de créer un autre tableau unidimensionnel dans Excel et d'effectuer des recherches à ce sujet. Pour une table de données 100x100, la nouvelle table nécessiterait 10 000 lignes.
Excuses si cela ne correspond pas à vos besoins.
Un résumé est ci-dessous - laissez-moi savoir si vous avez besoin de plus de détails. N = la dimension des données, par ex. 100 dans votre exemple.
Commencez par créer une nouvelle table avec cinq colonnes et des lignes NxN. Dans chaque cas, remplacez mes noms de colonne par la référence Excel appropriée
La première colonne (appelez-la INDEX) indique simplement 1, 2 ... NxN.
La deuxième colonne (DATAROW) contient une formule pour boucler 1, 2 ... N, 1, 2 ... N ... Cela peut être fait en utilisant quelque chose comme = MOD (INDEX-1, N) +1
La troisième colonne (DATACOL) contient 1, 1, 1 ... 2, 2, 2 ... (N fois chacun). Cela peut être fait avec = INT ((INDEX-1)/N) 1
La quatrième colonne (valeur) contient la valeur de votre table de données, en utilisant quelque chose comme: = OFFSET ($ A $ 1, datarow , DATACOL), en supposant que votre table de données commence à $ A $ 1
Nous avons maintenant un tableau à une dimension contenant toutes vos données.
La cinquième colonne (LOOKUP) contient la formule: = MATCH (cible, OFFSET (ValueRange, [lookup-1], 0), 0) + [lookup-1]
où [lookup-1 ] se réfère à la cellule immédiatement au-dessus (par exemple dans la cellule F4 cela se réfère à F3). Vous aurez besoin d'un 0 au-dessus de la première cellule dans la colonne LOOKUP.
VALUERANGE doit être une référence fixe (nommée ou utilisant $ signs) à toute la colonne VALUE.
La colonne LOOKUP contient alors les numéros INDEX qui peuvent être utilisés pour rechercher DATAROW et DATACOL pour trouver la position de la correspondance dans les données.
Cela fonctionne en recherchant des correspondances dans VALUERANGE, puis en recherchant des correspondances dans une plage ajustée commençant après la correspondance précédente.
Il est beaucoup plus facile dans une feuille de calcul puis par l'explication ci-dessus, mais c'est le meilleur que je peux faire pour le moment ...
On ne sait pas ce que vous voulez. Pouvez-vous poster quelques exemples de données, une table 5x5 dire, avec le résultat que vous recherchez dans le format que vous le souhaitez. – Hobbo
ne pouvez-vous pas simplement écrire une macro qui utilise la fonction Excel LOOKUP? – Simon