Chercher valeur dans un grand tableau

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

Bonjour

Juste pour amorcer

Tu notes le décalage en G1

Et tu lances la macro

Sub Find_Matches()
Dim CompareRange As Range, x As Range, y As Range
Dim Decalage As Integer

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

  Decalage = Range("G1")
  For Each x In Selection
    Set y = CompareRange.Find(what:=x, LookIn:=xlValues, lookat:=xlWhole)
    If Not y Is Nothing Then
      x.Offset(0, 3) = y.Offset(0, Decalage)
    Else
      x.Offset(0, 3) = "Inconnu"
    End If
  Next x
End Sub

Oui c'est bon.

Mais mettons que je veux qu'il selectionne automatiquement la colonne, et qu'il le fasse quand il trouve, dans une colonne, la valeur en g1.

exemple, selectionner la colonne qui contient le numero 85. est il possible?

Banzai64 a écrit :

Bonjour

Juste pour amorcer

Tu notes le décalage en G1

Et tu lances la macro

Sub Find_Matches()
Dim CompareRange As Range, x As Range, y As Range
Dim Decalage As Integer

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

  Decalage = Range("G1")
  For Each x In Selection
    Set y = CompareRange.Find(what:=x, LookIn:=xlValues, lookat:=xlWhole)
    If Not y Is Nothing Then
      x.Offset(0, 3) = y.Offset(0, Decalage)
    Else
      x.Offset(0, 3) = "Inconnu"
    End If
  Next x
End Sub

Bonsoir

De rien

Fournis un fichier comme cela je verrai comment sont disposées tes données

Pas la peine d'avoir toutes tes lignes, une bonne dizaine devrait suffire

Notes la feuille dans laquelle tu as la valeur à chercher

merci bcp

ici il y a le fichier.

là j'ai aussi une autre problème:

j'ai des listes des données. dans une colonne j'ai 10 fois le numéro 0, 20 le numéro 1, etc. dans la colonne B j'ai de numéro différents.

j'ai besoin de créer une liste a deux colonne, avec une macro, qui aie toutes les occurrences du numéro 0 et la cellule à droit de la colonne B. Donc après une autre liste à deux colonne qui aie toutes les occurrence du numéro 1, dans la colonne A, et toute les cellules à coté le 1 dans la colonne B.

Dans le fond, je dois prendre d'une colonne toutes les numéros pareil et les cellules à coté. Puis, pouvoir répéter cette opération avec les autres numéro de la colonne.

merci bcp.. très utile!

Bonjour

puliexcel a écrit :

dans une colonne j'ai 10 fois le numéro 0, 20 le numéro 1, etc. dans la colonne B j'ai de numéro différents.

Je crois que tu t'es trompé de fichier

Le problème n'est plus la recherche ?

Si c'est ça clôture ce post et ouvres en un autre car ton problème actuel est complétement différent

Il y a le problème de recherche, mais une autre problème aussi est survenu. S'il faut ouvrir un autre post pour demander des réponses je le ferai.

merci pour votre aide, ça a été assez utile déjà la première réponse.

Banzai64 a écrit :

Bonjour

puliexcel a écrit :

dans une colonne j'ai 10 fois le numéro 0, 20 le numéro 1, etc. dans la colonne B j'ai de numéro différents.

Je crois que tu t'es trompé de fichier

Le problème n'est plus la recherche ?

Si c'est ça clôture ce post et ouvres en un autre car ton problème actuel est complétement différent

Bonjour

Le problème de recherche n'est plus d'actualité car tu demandes radicalement autre chose

Quand celui ci reviendra et si je peux t'aider, je n'y manquerai pas de le faire

Amicalement

Rechercher des sujets similaires à "chercher valeur grand tableau"