Chercher valeur dans une matrice

Résolu
puliexcel Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
puliexcel Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Salut

J'ai un tableau excel avec 90 colonnes et 4000 lignes. C'est la "feuil2"

Dans une autre feuille ("feuil1"), j'ai une partie des valeurs du tableau précédent. J'ai quelque dizaine de valeurs qui correspondent à la première colonne du tableau précédent.

donc dans la feuil 2 il y a 90 colonne et 4000 lignes. dans le feuil 1 j'ai 20 ligne de la colonne A.

j'ai ce code



Sub Find_Matches()
Dim CompareRange As Variant, x As Variant, y As Variant

' Set CompareRange equal to the range to which you will
' compare the selection.
'Set CompareRange = Range("A1:A5")
' NOTE: If the compare range is located on another workbook
' or worksheet, use the following syntax.
' Set CompareRange = Workbooks("Book2"). _
' Worksheets("Sheet2").Range("A1:A5")

Set CompareRange = Worksheets("Feuil2").Range("A1:A6005")

' Loop through each cell in the selection and compare it to
' each cell in CompareRange.

For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 3) = y.Offset(0, 1)
Next y
Next x
End Sub




ce code me permet de sélectionner la liste de cellule de la feuille 1, qui correspond a une vingtaine de ligne de la colonne A, et il me permet de trouver ces valeurs dans la colonne A du grand tableau et d'afficher la valeurs à coté, la valeur de la colonne B de chaque valeur de la colonne A trouvé.

donc si j'ai Chien dans ma sélection, il va trouver Chien dans la colonne A du grand tableau et il va m'afficher la valeur qui est à coté de chien.

PAR CONTRE mon problème est le suivant:

je ne veux pas qu'il m'affiche la valeur à coté, celle de la colonne B, ma la valeur d'une colonne différente, mais de la même ligne. Donc mettons, la valeur de la colonne 81. Évidement je peux le faire a priori, si j'écris ( If x = y Then x.Offset(0, 3) = y.Offset(0, 81) ) dans ce cas il décale de 81 fois et il va me trouver la valeur que je désire.

mais comme ceci je vais devoir créer de macro différent chaque fois que je veux une valeur d'une colonne différents.

il n'est pas possible de établir avant la recherche, avec une userform, ou je ne sais pas quoi, la colonne que je cherche? donc de sélectionner la plage de cellule et aussi la valeur (y.Offset(0, ?) que je veux?

merci de vos aide

3 réponses

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

Ta question est trop longue et effraie...
Pourquoi n'utilises-tu pas la fonction RECHERCHEV plutôt que de passer par une macro ?
Si tu conserves la macro et que l'utilisateur doit saisir une donnée, je te conseille :
colonne=InputBox("Quelle colonne voulez-vous inspecter ?")

A+
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

tu peux utiliser une macro paramétrée dans le style

sub chercher_colonne(Col)
ton code avec (y.Offset(0, col) au lieu de (y.Offset(0, ?)
end sub

sub choisir ()
chercher_colonne 81
end sub

et si tu veux 14
chercher_colonne 14

attention pas de parenthèses , ce n'est pas une fonction
0
puliexcel Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Merci! c'est correct
0