Macro "Find" avec variable
rls
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
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
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
3 réponses
-
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
.
-
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
-
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