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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Erreur dans rechercheV

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur dans rechercheV

n°1917606
Isabelle11​6
Posté le 23-08-2009 à 04:02:50  profilanswer
 

Bonjour,
 
Je n'arrive pas à corriger la rechercheV si le critère n'existe pas dans les données tarifs. En utilisant "On Error Resume Next" la macro fonctionne, mais j'aimerai savoir comment faire pour éviter d'utiliser "On Error Resume Next".  
Merci pour vos conseils.
 
 
 
FinLigne = Application.WorksheetFunction.CountA(Sheets("RSS_Grp" ).Range("j:j" ))
On Error Resume Next
 
For i = 2 To FinLigne
Critere = Range("A" & i).Value
If Range("J" & i).Value = "" Then
    Range("K" & i).Value = 0
ElseIf Application.WorksheetFunction.IsError(Application.WorksheetFunction.VLookup(Critere, Range("Tarifs" ), 3, False)) = True Then
    Range("K" & i).Value = 0
Else
    Range("K" & i).Value = Application.WorksheetFunction.VLookup(Critere, Range("Tarifs" ), 3, False)
 
End If
 
Next i

mood
Publicité
Posté le 23-08-2009 à 04:02:50  profilanswer
 

n°1917621
seniorpapo​u
Posté le 23-08-2009 à 10:01:41  profilanswer
 

Bonjour,
 
j'ai l'impression que tu n'y coupes pas:
 
http://msdn.microsoft.com/en-us/library/dd797422.aspx
 
mais tu peux écrire ton code ainsi:
 
 
Sub ttt()
 
'Ton Finli est sujet à doute:  contA compte le nombre de cellules non vides, mais n'indique pas la dernière cellule non vide!!
 
'FinLi = Application.WorksheetFunction.CountA(Sheets("feuil1" ).Range("j:j" ))
On Error Resume Next
 finli = 10 'pour mon test
For i = 2 To finli
crit = Range("A" & i).Value
If Range("J" & i).Value = "" Then
    Range("K" & i).Value = 0
Else
err.number=0
    toto = Application.WorksheetFunction.VLookup(crit, Sheets("feuil2" ).Range("Tarifs" ), 3, False)
    numerr = Err.Number
    If numerr <>0 Then    
    Range("K" & i).Value = 0
    Err.Number = 0
    else
    Range("K" & i).Value =toto  
    End If
End If
Next i
On Error GoTo 0
End Sub
 
Cordialement


Message édité par seniorpapou le 23-08-2009 à 11:39:52
n°1917633
seniorpapo​u
Posté le 23-08-2009 à 11:40:52  profilanswer
 

re,
Une autre manière , sans le resume next:
 
 
Sub ttt1()
 Err.Clear
'Ton Finli est sujet à doute:  contA compte le nombre de cellules non vides, mais n'indique pas la dernière cellule non vide!!
 
'FinLi = Application.WorksheetFunction.CountA(Sheets("feuil1" ).Range("j:j" ))
On Error GoTo gest_error
 
 finli = 10 'pour mon test
 
For i = 2 To finli
crit = Range("A" & i).Value
Range("K" & i).Value = 0
If Range("J" & i).Value <> "" Then
    Err.Clear
    toto = Application.WorksheetFunction.VLookup(crit, Sheets("feuil2" ).Range("Tarifs" ), 3, False)
    numer = Err.Number 'pour voir le numéro d'erreur
    Range("K" & i).Value = toto
    numer = Err.Number ' numer est ici = 9  je ne sais pas pourquoi!!
End If
gest_error:
Err.Clear
Next i
On Error GoTo 0
End Sub
 

n°1917654
Isabelle11​6
Posté le 23-08-2009 à 15:39:28  profilanswer
 

Merci pour ton aide, le ttt fonctionne très bien. Je n'arrive pas pour le ttt1.  
Ok je vais modifier le code pour rechercher la dernière cellule non vide.  
Encore merci

n°1917655
seniorpapo​u
Posté le 23-08-2009 à 16:18:11  profilanswer
 

Bonsoir,
juste pour satisfaire ma curiosité, peux-tu me faire un copier coller de ton ttt1 STP
 
Merci

n°1917718
Isabelle11​6
Posté le 24-08-2009 à 04:50:00  profilanswer
 

Je ne l'ai pas modifié et l'ai testé tel que tu l'as écris. Si le critère existe pas de souci ça passe, mais dès qu'il tombe sur un critère qui n'existe pas il se bloque sur toto=application.worksheetfunction.vlookup(...). Je suis sur la version 2000 d'office. Je suis allée voir sur le lien que tu m'as donné le problème c'est que l'anglais et moi ne sommes vraiment pas amis... Par contre le n°erreur qui est dans le ttt est 1004. Cordialement.

n°1917719
seniorpapo​u
Posté le 24-08-2009 à 07:23:24  profilanswer
 

Bonjour,
voir peut-être de ce côté:
vérifier :  
dans VBA, menu Outils/Options, onglet Général  
que la récupération d'erreur n'est pas sur "Arret sur toutes les erreurs".  
 
Dans ce cas, sélectionner "Arret sur les erreurs non gérées".  

n°1918365
Isabelle11​6
Posté le 26-08-2009 à 04:03:24  profilanswer
 

Bonjour,
 
Je viens de vérifier et je suis bien sur "arret sur les erreurs non gérées". Sinon ta 1ère solution me convient très bien : 2 fois + rapide que ce que j'avais écris, je fais cette recherche sur 20000 lignes et que je renouvelle 8 fois. Je n'étais pas satisfaite de moi car je ne comprenais pas pourquoi j'étais obligée de passer par la gestion d'erreur tel que je le code.
Merci


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

  Erreur dans rechercheV

 

Sujets relatifs
Erreur 500 sur serveur Apacheok
[VBA] erreur de compilation procédure trop grandeErreur sur site qui décale le menu
erreur 91 en vba de accessProbabilité propagation erreur sur un PC
[RESOLU] erreur pendant le chargement un fichier XML[VBA] Erreur 1004 AutoFiltre method of Range class failed
Erreur 1004: Méthode Open de l'objet workbook échouéemessage d'erreur "can not access a member of class X"
Plus de sujets relatifs à : Erreur dans rechercheV


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