Recherchev en vba

sevy1

XLDnaute Occasionnel
Bonjour à tous
J'ai un fichier avec deux onglets je souhaiterais à partir d'un code VBA rechercher une valeur (unique) se trouvant dans les deux feuilles et prendre sa date que je reporte sur la feuille BASE à la colonne K
Voici ce que j'ai essayé mais j'ai un message d'erreur.
Code:
[/Sub recherchev()
Dim F1, F2 As Worksheets
Set F1 = BASES
Set F2 = SOLDE
Application.ScreenUpdating = False

With F1
    derlig = .Cells(.Rows.Count, "D").End(xlUp).Row
    For i = 3 To derlig
     .Range("K" & i).Value = WorksheetFunction.VLookup(.Range("J" & i).Value, F2.Range("E3:F20000"), 2, False)
    Next i
 End With
 
End Sub
CODE]
Puisque mon fichier à plus de 50000 lignes comment rendre cette recherche plus rapide.
Merci d'avance pour vos réponses
 

Pièces jointes

  • RECHERCHEV.xlsm
    21.9 KB · Affichages: 33
  • RECHERCHEV.xlsm
    21.9 KB · Affichages: 32

Iznogood1

XLDnaute Impliqué
Re : Recherchev en vba

Bonjour

Dim F1, F2 As Worksheets n'est pas correct
Enlève le "s" de "worksheets" pour écrire Worksheet

De plus, préfère
Dim F1 As Worksheet, F2 As Worksheet

Enlève aussi la validation des données qui coince si tu ne trouve pas de valeur correspondante.

Enfin, tu peux optimiser ton code ainsi :
Code:
Sub demo()
  BASES.Range("K2:K" & BASES.Range("A1").CurrentRegion.Rows.Count).FormulaR1C1 = "=VLOOKUP(RC[-1],RECUS!C[-6]:C[-5],RECUS!RC[-10],FALSE)"
End Sub
 
Dernière édition:

Philippe Tulliez

XLDnaute Nouveau
Re : Recherchev en vba

Bonjour,
Voici ce que j'ai essayé mais j'ai un message d'erreur.
C'est gentil de dire que tu as un message d'erreur mais il serait encore plus intéressant d'indiquer le n° de cette erreur, le message de celle-ci et le n° de ligne où a lieu cette erreur.
Mais déjà la première lecture de ton code, la première ligne est incorrecte.
Il faut écrire
Code:
Dim F1 As Worksheet, F2 As Worksheet
et à la deuxième et troisième ligne il y a peut-être un souci.
Utilises-tu le CodeName des feuilles où leur nom ?
Si c'est le CodeName, nul besoin d'utiliser une variable objet, comme ci-dessous
Code:
With BASES
    derlig = .Cells(.Rows.Count, "D").End(xlUp).Row
 ......
 .......
dans le cas contraire c'est
Code:
Set F1 = Worksheets("BASES")
 

sevy1

XLDnaute Occasionnel
Re : Recherchev en vba

Bonjour
Merci à tous déjà pour les corrections apportées et vos différentes propositions qui marchent, seulement lorsque je lance la macro pour un grand nombre de valeurs il faut attendre quelques minutes.
Y a t_il un autre moyen qui puisse permettre d'être rapide?
 

Iznogood1

XLDnaute Impliqué
Re : Recherchev en vba

Sevy,

pour accèlere le code :
1/ Sois tu utilises le code de ma réponse à 10:33
2/ Soit tu commences to code par Application.Calculation = xlCalculationManual et tu termines par Application.Calculation =xlCalculationAutomatic
 

sevy1

XLDnaute Occasionnel
Re : Recherchev en vba

Bonjour
En lisant dans les posts; il semblerait que les tableaux sont plus rapides
Comment transformer le code de néné06 en tableau
HTML:
Sub recherchev()
    Dim F1, F2 As Worksheet
    Dim d As Variant
    Set F1 = BASES
    Set F2 = SOLDE
    derlig = Cells(Rows.Count, "D").End(xlUp).Row
        For i = 2 To derlig
            d = Application.Match(Cells(i, 10), F2.Range("E:E"), 0)
                If IsNumeric(d) Then Cells(i, 11) = F2.Cells(d, 6)
        Next i
End Sub
 

néné06

XLDnaute Accro
Re : Recherchev en vba

Re,
Te serait il possible de nous faire parvenir une JP avec:
Feuil(BASE), la colonne J complète.(Env 50000 lignes ?)
Feuil (RECUS), les colonnes J et K complètes.
Pour la mise en tableaux cela ne pose pas de p)roblème!

A+

René
 

néné06

XLDnaute Accro
Re : Recherchev en vba

Re,

Avec tableau à tester?

Sub recherchev()
Dim F1, F2 As Worksheet
Dim d As Variant
Set F1 = BASES
Set F2 = SOLDE
Dim tablo
tablo = F2.Range("E1:E65500")
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
d = Application.Match(Cells(i, 10), tablo, 0)
If IsNumeric(d) Then Cells(i, 11) = F2.Cells(d, 6)
Next i
End Sub

A+

René
 

Discussions similaires

Réponses
7
Affichages
334
Réponses
11
Affichages
298
Réponses
12
Affichages
253

Statistiques des forums

Discussions
312 326
Messages
2 087 312
Membres
103 513
dernier inscrit
adel.01.01.80.19