Bug fonction find

Bug fonction find - VB/VBA/VBS - Programmation

Marsh Posté le 17-07-2006 à 11:01:30    

:jap: Bonjour à tous, je ne sais pas si ce problème est vraiment connu ou pas mais en tous cas je n'ai rien trouvé pour me débloquer.
 
Mon programme doit chercher un code postal pris dans un fichier A pour le rechercher dans un fichier. Jusqu'ici rien de bien méchant vous allez me dire, d'autant plus que celà marche très bien dans le cas où on trouve le code postal. Mais dans le cas où on ne trouve pas le code postal, la fonction find renvoie quand même un objet non vide pris au hasard dans le fichier B (soit un code postal n'ayant aucun rapport avec celui cherché ou soit le titre de la colonne). :sweat:  
 
Pouvez-vous, s'il vous plaît, m'aider à me débloquer de cette situation et trouvé une parade à cette fonction find.

Reply

Marsh Posté le 17-07-2006 à 11:01:30   

Reply

Marsh Posté le 17-07-2006 à 11:07:52    

Peut être pour t'assurer que la fonction te retourne ce que tu attends, fais un autre test avant de lancer la suite de ton module...

Reply

Marsh Posté le 17-07-2006 à 11:12:59    

Je mets mon code si ça peut aider :

Citation :

  z = Workbooks(fichierA).Sheets(sheetName).UsedRange.Rows.Count
   For a = 2 To z
     zipCode = Workbooks(fichierA).Sheets(sheetName).Range("J" & a).Value
     Workbooks(fichierB).Sheets(sheetName).Activate
     On Error Resume Next
    Set wordFound = Cells.Find(What:=zipCode, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
       :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
       True, SearchFormat:=False).Activate

     
       If Not wordFound Is Nothing Then
         nosearcherror = "True"
       Else
         nosearcherror = "False"
       End If
  Next a

Reply

Marsh Posté le 17-07-2006 à 11:19:12    


Ajoute la condition suivante
     
       If (Not wordFound Is Nothing) And wodfound=zipCode Then
         nosearcherror = "True"
       Else
         nosearcherror = "False"
       End If
 
 

Reply

Marsh Posté le 17-07-2006 à 11:29:17    

Salut jpcheck, ça ne marche pas ce que tu m'as donné. J'ai aussi essayé avec wordfound.select et activecell.value et ça ne marche pas. Le code rentre quand même dans le If.

Reply

Marsh Posté le 17-07-2006 à 11:39:58    

et si tu initialises ton wordfound à nothing ?
mais pkoi activer les cellules pour finalement ne rien faire avec ??

Reply

Marsh Posté le 17-07-2006 à 11:47:47    

jpcheck a écrit :

et si tu initialises ton wordfound à nothing ?
mais pkoi activer les cellules pour finalement ne rien faire avec ??


marche pas non plus quand je l'initialise. Je comprends pas ce que tu me demandes, j'active ma feuille pour pouvoir chercher dedans maisz je vois pas ce que je fais d'autre.  :??:

Reply

Marsh Posté le 17-07-2006 à 11:53:47    

tu peux simplifier ton appel Find, il n'est pas nécessaire de mettre tous les paramètres.
si ca ne marche pas, tu peux essayer avec un  
for each cell in Workbooks(fichierB).Sheets(sheetName)
.value etc.

Reply

Marsh Posté le 17-07-2006 à 11:58:22    

ok je vais tester ça, merci beaucoup jp. Je te tiens au courant.

Reply

Marsh Posté le 18-07-2006 à 11:41:57    

Bon j'ai testé un for each mais ça ne marchait pas comme je voulais. Alors j'ai fait tout bète et ça marche très bien, plus de bug de find() :  
 

Citation :

      wordFound = Nothing
       rowNumber = 0
       citySLA = "Nothing"
       Set wordFound2 = Cells.Find(What:=cityName, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:= _
       xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:=False).Activate
       
       If Not wordFound Is Nothing Then
         wordFound.Select
         rowNumber = ActiveCell.Row
         test = Range("B" & rowNumber).Value
         If test = cityName Then
           nosearcherror = "True"
           citySLA = Range("F" & rowNumber).Value
         Else
           nosearcherror = "False"
         End If
       End If


 
Alors dans ce code je fais quand même la recherche, ma recherche me retourne un objet même si la fonction n'a rien trouvé. Je prends le numéro de la ligne et je regarde la donnée (nom d'une ville pour moi) qu'y si trouve (dans la colonne "B" pour moi). Je la compare avec la donnée que je voulais chercher et si ce n'est pas les même alors j'ai un bug. Voilà j'espère que ça pourra aider ceux qui ont eu le même problème que moi. Merci JP encore pour ton aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed