Macro "Find" avec variable

Fermé
rls - 20 juil. 2017 à 21:18
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 - 31 juil. 2017 à 11:55
Bonsoir,

Je souhaiterais solliciter vote aide pour la création d'une macro,

Dans une feuille "Feuil1" j'ai une colonne D avec des nombres aléatoire (ex: 1343,4957,17023 etc... il n'y a aucun ordre logique)

Dans une feuille "Feuil2" j'ai une colonne V avec d'autre nombre aléatoire (aussi logique que ceux de la première feuille :) )

Cependant, certains nombres sont identiques dans la feuille 1 et 2, je voudrais créer une macro avec "Find" pour prendre les valeurs de la feuille 1 et les chercher dans la feuille 2. Si le nombre est trouvé alors il est mis sur fond vert dans la feuille 2, sinon rien.
Le problème est que dans "What= " il lui faut une valeur :

Cells.Find(What:= , After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

Mais dans mon cas il faudrait tester toutes les valeurs une par une (Il n'y en a pas non plus 200 000 sinon j'imagine que c'est la saturation du PC qui m'attend...) j'avais pensé à une sorte de boucle peut-être

Ou bien avez-vous une autre alternative à proposez ?

Cordialement
A voir également:

3 réponses

jordane45 Messages postés 38217 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 juillet 2024 4 680
20 juil. 2017 à 21:23
Bonjour,


j'avais pensé à une sorte de boucle peut-être

Oui.
Dans laquelle tu utilises le FIND

Voici des exemples pour FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel

.
0
Merci jordane45 pour cet article.
Cependant je vois que l'on se réfère toujours à une seule même valeur de recherche pour le "What" alors que dans mon cas cette valeur change d'une cellule à l'autre...
0
jordane45 Messages postés 38217 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 juillet 2024 4 680 > rls
24 juil. 2017 à 13:40
Non... les exemples utilisent une variable me semble t'il. ..
0
thev Messages postés 1855 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 13 mai 2024 683
Modifié le 28 juil. 2017 à 20:39
Bonjour,

ci-dessous proposition d'exemple de code :

 Sub recherche()
Dim tb(), nombre As Range, i As Long

'// Conversion des valeurs de la colonne D de la feuille 1 en un tableau à une dimension
With Feuil1.UsedRange
tb = Application.Transpose(.Columns("D").Value)
End With
'// Recherche des valeurs de la colonne V de la feuille 2 dans le tableau de feuille 1
With Feuil2.UsedRange
On Error Resume Next
For Each nombre In .Columns("V").Cells
i = 0: i = Application.Match(nombre.Value, tb, 0)
If i > 0 Then nombre.Interior.Color = 5296274
Next nombre
End With
End Sub


 
0
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 7 225
Modifié le 31 juil. 2017 à 11:55
Bonjour,

Ou bien avez-vous une autre alternative à proposez ?
une MFC
eric

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0