Macro "Find" avec variable

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

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. rls
       
      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
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > rls
         
        Non... les exemples utilisent une variable me semble t'il. ..
        0
  2. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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