Macro "Find" avec variable

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

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    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
    1. 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


      1. Modérateur
        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

        .
        1. 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...
        2. Modérateur
          @rlsNon... les exemples utilisent une variable me semble t'il. ..