XL 2013 recherche valeur tableau 2 en fonction d'une valeur dans tableau 1

M Fabrice

XLDnaute Nouveau
Bonjour,

Est-ce que quelqu'un connaît dans excel la formule pour aller chercher la correspondance dans le tableau 2 d’une valeur du tableau 1 ?

Par exemple : si je souhaite avoir la correspondance dans le tableau 2 de la valeur 7 du tableau 1, que excel me donne « D ».

Cela fait plusieurs fois que je me cogne à cette problématique. Je n’ai jamais trouvé la solution…et pourtant j’en aurais vraiment besoin.

Tableau 1 :

1​
2​
3​
4​
5​
6​
7​



Tableau 2 :

Z​
E​
F​
T​
H​
I​
J​
L​
P​
Y​
R​
D​
 
Solution
Bonjour Fabrice,
Correspondance n'est pas une fonction, c'est une fonction personnelle. En d'autres termes une fonction qui est écrite en VBA.
1- Dans votre fichier faites ALT + F11, vous arrivez dans l'éditeur VBA
2- A gauche sur Modules faites Clic droit Insertion puis Modules. Une fenêtre blanche s'ouvre à droite.
3- Dans cette feuille collez :
VB:
Function Correspondance(MatIn As Range, MatOut As Range, Valeur)
Application.Volatile
Col = 0: Lig = 0
For Each c In MatIn
    aaaa = c.Value
    If c.Value = Valeur Then
        Col = c.Column
        Lig = c.Row - 1
        Exit For
    End If
Next
If Lig = 0 Or Col = 0 Then
    Correspondance = "Non trouvé"
Else
    Correspondance = MatOut(Lig, Col)
End If
End Function
4- Fermez...

Dugenou

XLDnaute Barbatruc
Bonjour,
Un fichier permettrait de mieux te comprendre.
Dans ton exemple : comment sait-on que D correspond à la valeur 7 du tableau 1 ? uniquement parce que c'est la même cellule ? (3eme colonne, 4eme ligne)
et où faut-il afficher ce D ?
un essai en pj
Cordialement
 

Pièces jointes

  • mFabrice.xlsx
    10.8 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Fabrice,
Correspondance n'est pas une fonction, c'est une fonction personnelle. En d'autres termes une fonction qui est écrite en VBA.
1- Dans votre fichier faites ALT + F11, vous arrivez dans l'éditeur VBA
2- A gauche sur Modules faites Clic droit Insertion puis Modules. Une fenêtre blanche s'ouvre à droite.
3- Dans cette feuille collez :
VB:
Function Correspondance(MatIn As Range, MatOut As Range, Valeur)
Application.Volatile
Col = 0: Lig = 0
For Each c In MatIn
    aaaa = c.Value
    If c.Value = Valeur Then
        Col = c.Column
        Lig = c.Row - 1
        Exit For
    End If
Next
If Lig = 0 Or Col = 0 Then
    Correspondance = "Non trouvé"
Else
    Correspondance = MatOut(Lig, Col)
End If
End Function
4- Fermez l'éditeur VBA. Vous disposez maintenant de la fonction Correspondance, que vous pouvez modifier à votre gré. ( n'oubliez pas de sauvegarder en xlsm et d'autoriser les macros )

J'ai mis un tuto en ressources à ce sujet. Cela permet souvent de faire des choses intéressantes :
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40