VBA Comment gérer une valeur non trouvé avec Find.

Bert

XLDnaute Nouveau
Bonjour,

Avant toutes choses merci à tout ceux qui m'aideront à trouver la solution!
J'ai un code: assez long ici dessous qui fonctionne très bien. Sauf que quand la fobction Find. ne trouve pas la valeur dans la plage de données j'ai une erreur qui plante tout. Je suis obligé d'exécuter une autre macro (Application.EnableEvents = True) pour réinitialiser le truc. Alors que je voudrais juste un "Then Exit sub" si la fonction ne trouve pas la valeur.
J'ai essayé un If not Iserror(Find.blabla) then
Mais ca ne fonctionne pas..

Merci pour vos idées et vos solutions.
A bientôt!



Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Dim i As Long
Dim j As Long
Dim y As Long

j = Target.Column
i = Target.Row

If j = 4 Then GoTo Client 'Condition colonne 4
If j = 7 Then GoTo Commune


Client:
If i >= 11 And i <= 1010 Then  'Condition de la ligne 11 à 1010

If Cells(i, 4).Value <> Cells(i, 43).Value Then 'Si la valeur est différente à la valeur d'une cellule morte
If Not IsError(Application.VLookup(Cells(i, 4).Value, Worksheets("Client").Range("A2:E100000"), 2, False)) Then
Cells(i, 5).Value = Application.VLookup(Cells(i, 4).Value, Worksheets("Client").Range("A2:E100000"), 2, False) 'Ecrire dans les 3 cellules situé à gauche de la Target une recherche V
Cells(i, 6).Value = ""

End If
End If
End If

Cells(i, 43).Value = Cells(i, 4).Value
'Recopier la nouvelle valeur dans la cellule morte
GoTo Fin

Commune:
If Cells(i, 6) = "" Then
If i >= 11 And i <= 1010 Then
If Cells(i, 7).Value <> Cells(i, 44).Value Then 'Si la valeur est différente à la valeur d'une cellule morte

Worksheets("Province").Activate
Worksheets("Province").Range("C3:Z200").Select

'LISEZ A PARTIR D ICI----------------------------------------------------------------------------

If Not IsError(Worksheets("Province").Range("C3:Z200").Find(What:=Cells(i, 7).Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Address) Then
myCell = Worksheets("Province").Range("C3:Z200").Find(What:=Cells(i, 7).Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Address
Ligne = Range(myCell).Row

'---------------------------------------------------------------------------------------------------

Cells(i, 6).Value = Worksheets("Province").Cells(Ligne, 2).Value
Worksheets("Province").Range("A2").Select
Worksheets("Liste").Activate

End If
End If
End If
End If

Cells(i, 44).Value = Cells(i, 7).Value
'Recopier la nouvelle valeur dans la cellule morte
GoTo Fin



Fin:

Application.EnableEvents = True

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : VBA Comment gérer une valeur non trouvé avec Find.

Bonjour,

utilise une variable de type "range", exemple cdi-dessous à adapter :
Code:
Dim x As Range
Set x = Range("2:2").Find("valeurcherchée", , xlValues, xlWhole, , , False)
If x Is Nothing Then GoTo fin

bon après midi
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 611
dernier inscrit
sebboes