Si fonction find ne trouve pas comment faire

Résolu
rvz Messages postés 35 Statut Membre -  
dandypunk Messages postés 838 Statut Membre -
Bonjour,

Désespéré !!!

Absolument pas moi comprendre 2 soirée que je bud
i = ActiveSheet.[c3].Value
If [zz:b10000].Find(i, range("zz")([zz:b10000].Count), xlValues, xlWhole, , xlNext, False).Select = i Then

ActiveCell.EntireRow.Copy [a3]
[zz:b10000].Find(i, range("zz")([zz:b10000].Count), xlValues, xlWhole, , xlNext, False).Select
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
ActiveWorkbook.Names.Add Name:="zz1", RefersToR1C1:=ActiveCell
Else: [a3]
End If

Tout va bien si la valeur de i est trouvé mais quand elle ne trouve pas message d'erreur !!!
Je ne comprends pas aidez moi svp si vous le pouvez !!!
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. dandypunk Messages postés 838 Statut Membre 83
     
    La méthode .Find retourne la valeur Nothing si elle ne trouve rien.

    Il fout alors créer une condition

    If .find is Nothing

    ou créer un select/case avec un CASE nothing qui t'envoi sur "la suite" et un case ELSE qui continue ton applic normalement
    1
  2. le père
     
    Bonjour

    ...
    Else
    ActiveSheet.[a3].Select ' je suppose que c'est ça que tu veux faire
    end if
    0
  3. dandypunk Messages postés 838 Statut Membre 83
     
    Essayes avec un On error Goto au début deta procédure.

    On Error GOTO NonTrouve
    'Pocedure

    NonTrouvé:
    Msgbox("Pas de résultat pour votre question",vbOKOnly+vbExclamation)
    End sub
    0
  4. rvz Messages postés 35 Statut Membre
     
    Non en fait i est un nom que je cherche dans la colonne b.
    Malheureusement,quand find ne trouve pas je suis en erreur.
    Donc je rajoute if pour dire que si = i then accompli la macro
    et que pour else en fait je m'en fiche un peu,c'est pour celà que je sélectionne une cellule.

    Mais surprise et pourtant je mouline,find me met toujours en erreur.

    Je reste logique mais quelque chose m'échappe mais quoi ?

    Pour info, la macro complête est :

    i = ActiveSheet.[c3].Value
    y = 12

    For n = 1 To y
    Sheets(n).Select

    ActiveWorkbook.Names("zz").Delete
    [b7:b10000].Find(i, range("b7")([b7:b10000].Count), xlValues, xlWhole, , xlNext, False).Select
    ActiveCell.EntireRow.Copy [a2]
    [b7:b10000].Find(i, range("b7")([b7:b10000].Count), xlValues, xlWhole, , xlNext, False).Select
    ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
    ActiveWorkbook.Names.Add Name:="zz", RefersToR1C1:=ActiveCell

    If [zz:b10000].Find(i, range("zz")([zz:b10000].Count), xlValues, xlWhole, , xlNext, False).Select = i Then

    ActiveCell.EntireRow.Copy [a3]
    [zz:b10000].Find(i, range("zz")([zz:b10000].Count), xlValues, xlWhole, , xlNext, False).Select
    ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
    ActiveWorkbook.Names.Add Name:="zz1", RefersToR1C1:=ActiveCell
    Else: [a3]
    End If

    Next

    La deuxième recherche me met en erreur si elle ne trouve pas le i dans seconde partie (dans la première elle va obligatoirement trouvé)
    Donc si solution ce serait extrêmement cool svp car j'aime apprendre mais 2 soirée la dessus je commence à ne plus savoir.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rvz Messages postés 35 Statut Membre
     
    Non, un Msgbox("Pas de résultat pour votre question",vbOKOnly+vbExclamation) ne me convient pas,il faut que la macro passe à la suite automatiquement sans poser de question qu'elle trouve ou non.La suite de ce que j'ai écrit étant une nouvelle condition à partir de zz1 qui est une cellule de la colonne b.
    Je ne sais pas pourquoi je bloque la dessus,c'est trop bête.
    0
  7. dandypunk Messages postés 838 Statut Membre 83
     
    A la place du msgbox, essaye de placer "la suite"
    0