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 SubOui 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