Quand vlookup ne renvoie pas de valeur et plante la macro

Bonjour à tous,

J'ai code qui me permet de rechercher des valeurs dans un fichier masqué. Si ce dernier n'a pas de correspondance il met le message "erreur d'exécution '1004': Impossible de lire la propriété vlookup de la classe worksheetfunction"

Je voudrais que dans mon code à la place j'ai code qui s'execute du style :

IF iserror(Result) = true then

Mais je ne sais pas où le placer et si c'est bien le bon code...

Voici le code source :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PSO As String
Dim Table As String
Dim Result As String

If Not Intersect(Target, Range("i2:i25000")) Is Nothing Then
PSO = Target.Offset(0, 0).Value
    ChDir "S:\Book AM\SECTEUR UGV-MECANIQUE\3 GESTION PRODUCTION\3-1 CHARGE\3-1-1 EXTRACTION OF"
    Workbooks.Open Filename:= _
        "S:\Book AM\SECTEUR UGV-MECANIQUE\3 GESTION PRODUCTION\3-1 CHARGE\3-1-1 EXTRACTION OF\Consignes.xlsx" _
        , UpdateLinks:=3
        ActiveWindow.Visible = False
Result = "***consignes permanentes***" & Chr(10) & WorksheetFunction.VLookup(PSO, Workbooks("Consignes.xlsx").Sheets("Consigne").Range("B1:G20000"), 3, False) & Chr(10) & "***consignes provisoires***" & Chr(10) & WorksheetFunction.VLookup(PSO, Workbooks("Consignes.xlsx").Sheets("Consigne").Range("B1:G20000"), 5, False) & " avant le : " & Format(WorksheetFunction.VLookup(PSO, Workbooks("Consignes.xlsx").Sheets("Consigne").Range("B1:G20000"), 6, False), "dd/mm/yy")

MsgBox Result, , "CONSIGNES PRODUIT"
Workbooks("Consignes.xlsx").Close False
End If
End Sub

Merci d'avance à tous les contributeurs qui pourront m'aider !

Chree74

Bonjour

Fais un essai en typant Result en Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PSO As String
Dim Table As String
Dim Result

Si pas ça il faut joindre le fichier en erreur

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PSO As String
Dim Table As String
Dim Result As Variant

Si c'était çà : non çà ne fonctionne pas

Bonjour

Banzai64 a écrit :

Si pas ça il faut joindre le fichier en erreur

Et voilà !

41exemple.xlsm (24.04 Ko)

Bonjour

A tester

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PSO As String
Dim Table As String
Dim Result As String

  If Not Intersect(Target, Range("i2:i25000")) Is Nothing Then
    PSO = Target.Offset(0, 0).Value
    '    ChDir "S:\Book AM\SECTEUR UGV-MECANIQUE\3 GESTION PRODUCTION\3-1 CHARGE\3-1-1 EXTRACTION OF"
    '    Workbooks.Open Filename:= _
         '        "S:\Book AM\SECTEUR UGV-MECANIQUE\3 GESTION PRODUCTION\3-1 CHARGE\3-1-1 EXTRACTION OF\Consignes.xlsx" _
         '        , UpdateLinks:=3
    '        ActiveWindow.Visible = False

    If Application.CountIf(Sheets("Consigne").Columns("B"), PSO) > 0 Then
      Result = "***consignes permanentes***" & Chr(10) & WorksheetFunction.VLookup(PSO, Sheets("Consigne").Range("B1:G20000"), 3, False) & Chr(10) & "***consignes provisoires***" & Chr(10) & WorksheetFunction.VLookup(PSO, Sheets("Consigne").Range("B1:G20000"), 5, False) & " avant le : " & Format(WorksheetFunction.VLookup(PSO, Sheets("Consigne").Range("B1:G20000"), 6, False), "dd/mm/yy")
      MsgBox Result, , "CONSIGNES PRODUIT"
      'Workbooks("Consignes.xlsx").Close False
    Else
      MsgBox PSO & " : introuvable"
    End If
  End If
End Sub

Banzaï64 je te remercie c'est ok !

Rechercher des sujets similaires à "quand vlookup renvoie pas valeur plante macro"