Recherche Valeur dans tableau 3 dimensions

Bonjour,

Je souhaite obtenir la position d'une valeur dans un tableau à trois dimensions, mon code n'a pas le résultat escompté ... pour l'instant ...

Je pense que la propriété Application.Index qui ne me retourne la colonne dans laquelle je veux rechercher une valeur via la propriété Application.Match .. Effectivement, j'ai une "Erreur 2042" (ou alors l'erreur provient de Application.Index ...)

Pour information, je récupère mon jeu de données dans une table Oracle dans un recordset (mais j'ai mis les valeurs récupérées dans l'onglet "Feuil1")

L'erreur est ici :

  While Selection.Value <> Empty

    ' Recherche de la position de la valeur "numéro de compte" dans le tableau arr à la première colonne
    ' qui (A PRIORI ?) est celle de la colonne des numéros de compte
     pos = Application.Match(Selection.Value, Application.Index(arr, 0, 1), 0)
    'pos = Application.Match(Selection.Value, Application.Index(arr, , 1), 0)

    ' Ce qui suit ne marche pas, pos a pour valeur Erreur 2042
    MsgBox arr(pos, 1)

    Selection.Offset(1, 0).Select
  Wend

Le code en entier est disponible là dans le fichier joint, (Procédure CaMarchePas !)

Par avance, merci pour votre aide !

Bonjour,

tu as ce message quand une cellule contient #N/A

Bonsoir,

Je n'ai pas tout compris. Le code suivant recherche et annonce la position (le numéro de ligne) d'une sélection de la première colonne :

Sub test()
    Dim plage As Range
    derLig = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    Set plage = Range(Cells(1, 1), Cells(derLig, 1))
    MsgBox "Position : " & WorksheetFunction.Match(Selection, plage, 0)
End Sub

En fait, mon tableau de recherche

Application.Index(arr, 0, 1)

n'était pas vide, je ne comprenais pas pourquoi j'avais l'erreur 2042 alors que je savais que la valeur recherchée existait bien mon tableau/colonne de recherche.

J'ai fini par comprendre qu'en fait le Match comparait prenait comme élément de comparaison soit un String, soit un Integer.

En effet, j'avais des valeurs (à comparer) comme :

0025672839 => est considéré comme un String puisque çà commence par des zéros

3357657807 ==> est considéré comme un Integer ==> Et ça plantait (Erreur 2024)

Or le tableau d'Array "arr" est surement un tableau de String j'imagine, du coup comparer un Integer à un String mettait la fonction Match en Erreur.

La solution a été de ne plus utiliser :

pos = Application.Match(Selection.Value, Application.Index(arr, 0, 1), 0)

Mais :

Dim valeur as String
' Formate en String si Selection.Value est un integer
valeur = Selection.Value
pos = Application.Match(valeur, Application.Index(tab_exemple, , 1), 0)

Et ça a marché.

Toutefois, merci pour votre aide !

Rechercher des sujets similaires à "recherche valeur tableau dimensions"