Method .find, reinitialiser

Bonjour a tous,

Voila j'ai un petit souci avec ma méthode .find. Je cherche a scanner une feuille Excel pour y trouver une certaine valeur. Par exemple pour chaque ligne "obieg CO", rechercher dans la ligne la valeur "nco" pour la reporter dans un tableau a part.

J'aimerais que lorsque la fonction ne trouve pas de valeur dans la ligne elle renvoie N/A. Mais la est mon problème, il semblerait que la fonction garde en mémoire la dernière cellule trouvée et me reporte ça valeur lorsque la suivante n'en trouve pas.

voici une copie de la portion de code correspondante :

'CO_moc

i = 2
CO_moc = 0
Val = 0
Set Find_Nco = Selection.Find(What:="Nco=", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
Find_Nco = Nothing
Do
    If Cells(i, 11) = "OBIEG CO" And Cells(i, 9).Value = Nr_obieg Then
        Rows(i).Select
        If Find_Nco Is Nothing Then
            CO_moc = "N/A"
        Else
            Val = Find_Nco.Value
            Find_Nco.Activate
            CO_moc = CDbl(Mid(Val, 6, 10) & "," & ActiveCell.Offset(0, 1))
        End If
    End If
    i = i + 1
Loop Until Cells(i, 1).Value = ""

Quelqu’un aurait une petite idée pour me sortir de la ?

Merci d'avance et désolé pour les fautes mon clavier n'a pas les accents.

Quickness

bonjour,

à première vue, je mettrais l'instruction find dans la boucle comme ceci. à tester.

'CO_moc

i = 2
CO_moc = 0
Val = 0

Do
    If Cells(i, 11) = "OBIEG CO" And Cells(i, 9).Value = Nr_obieg Then
        Rows(i).Select
       Set Find_Nco = Selection.Find(What:="Nco=", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
        If Find_Nco Is Nothing Then
            CO_moc = "N/A"
        Else
            Val = Find_Nco.Value
            Find_Nco.Activate
            CO_moc = CDbl(Mid(Val, 6, 10) & "," & ActiveCell.Offset(0, 1))
        End If
    End If
    i = i + 1
Loop Until Cells(i, 1).Value = ""

Ahahah simple et efficace cela fait plus d'une heure que je m'arrache les cheveux devant ce problème ><

Merci beaucoup !

Rechercher des sujets similaires à "method find reinitialiser"