Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1044 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Bug fonction find

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Bug fonction find

n°1407897
zephyron1
Posté le 17-07-2006 à 11:01:30  profilanswer
 

: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.

mood
Publicité
Posté le 17-07-2006 à 11:01:30  profilanswer
 

n°1407908
jpcheck
Pioupiou
Posté le 17-07-2006 à 11:07:52  profilanswer
 

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...

n°1407912
zephyron1
Posté le 17-07-2006 à 11:12:59  profilanswer
 

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

n°1407921
jpcheck
Pioupiou
Posté le 17-07-2006 à 11:19:12  profilanswer
 


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

n°1407933
zephyron1
Posté le 17-07-2006 à 11:29:17  profilanswer
 

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.

n°1407947
jpcheck
Pioupiou
Posté le 17-07-2006 à 11:39:58  profilanswer
 

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

n°1407960
zephyron1
Posté le 17-07-2006 à 11:47:47  profilanswer
 

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.  :??:

n°1407971
jpcheck
Pioupiou
Posté le 17-07-2006 à 11:53:47  profilanswer
 

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.

n°1407980
zephyron1
Posté le 17-07-2006 à 11:58:22  profilanswer
 

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

n°1408478
zephyron1
Posté le 18-07-2006 à 11:41:57  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Bug fonction find

 

Sujets relatifs
Fonction mail() et Hotmail !Appel de fonction C++ depuis un thread C
[C+GTK]Résultat diff qd une fonction est lancé par une interface graph[VB] Arrêter l'exécution d'une fonction
Bug d'affichage sous IEAutomatiser fonction d'envoi de mails via site
[Résolu] Bug d'IE avec les caractères accentués.affiche une page ou en autre en fonction d'une condition
fonction TRONQUE résoluProbleme avec la fonction DATACHANGED
Plus de sujets relatifs à : Bug fonction find


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR