VBA Excel Recherchev - Erreur 13 - “Incompatibilité de Type”

Je suis en train de travailler sur un Excel Macro VBA qui reçoit le courriel d'un client à partir d'une autre feuille.

J'obtiens l'Erreur 13 "Incompatibilité de Type" à partir de la Recherchev:

For Each c In Range("D3:D130").Cells

    If c > 500 Then

      Dim emailadress As String
      Dim client_name As String
      Dim lookup_mail As Range

      Set lookup_mail = Sheets("MAILS").Range("A1:D130")

      client_name = Range("A" & (c.Row)).Value

      emailadress = Application.VLookup(client_name, lookup_mail, 4, False)

Si je le fais de cette façon, il fonctionne très bien:

      emailadress = Application.VLookup("John Doe", lookup_mail, 4, False)

Donc je suppose qu'il ya quelque chose de mal avec la façon dont je "déclarer?" client_name. Ce qui est étrange, parce que quand je l'ai sortie client_name dans une boîte de Message il s'affiche parfaitement.

(J'utilise VBA dans la mesure où j'ai besoin d'envoyer des courriers électroniques automatiques pour les clients)

Toute aide aprécié!

Un Type 13 erreur à ce point indique généralement que la valeur n'a pas pu être trouvé. Avez-vous de débogage et quelle est la valeur de client_name au moment de l'erreur? Exécuter Debug.Print char(39) & client_name & chr(39) juste avant la recherchev et vérifiez la fenêtre pour voir si il y a leading/trailing spaces dans la source et/ou cible.
La valeur est correcte, j'ai le nom du client, mais la Recherchev pour une raison quelconque ne parvient pas à lire cette valeur...
Ne devrait-elle pas être Application.WorksheetFunction.VLookup(...)? Aussi, si vous avez nommé le Range("A1:D130"), vous pouvez simplement mettre le texte en Recherchev, vous pouvez également effectuer cette plage nommée dynamique de sorte que vous ne vous souciez pas de la taille de la portée des changements.
Quel est le but de If c > 500 Then? Entendez-vous la valeur de c (c.Value)?

OriginalL'auteur Franco Altuna | 2015-07-30