Copier cellule dans onglet X si présent dans onglet Y

flint6593

XLDnaute Occasionnel
Bonjour,
Mon sujet est assez simple mais très lourd.
En gros j'ai une liste de références dans l'onglet 1 (colonne A).
J'ai la base de données dans l'onglet 2 (référence colonne A et valeur colonne B).

Je voudrais tester mes références de l'onglet 1, prendre la valeur dans l'onglet 2 et copier le tout dans l'onglet 3.
J'ai le code assez simple pour ça mais j'ai une centaine de références à tester sur plus de 150000 références dans l'onglet 2. Et mon code prend trop de temps.
Auriez-vous une astuce? Par un tableau?

Voilà mon code qui fonctionne mais qui est lent.
Merci d'avance!!! :D

"Sub valeurs()

Sheets(1).Select

i = 1
j = 2
k = 2

Do While Range("A" & i).Value <> ""

ref_a_tester = Range("A" & i).Value

Sheets(2).Select

Do While Range("A" & j).Value <> ""
ref_base = Range("A" & j).Value

If pn_a_tester = pn_base Then
ref_val = Range("E" & i).Value

Sheets(3).Select
Range("A" & k).Value = ref_base
Range("B" & k).Value = ref_val
k = k + 1
End If
Sheets(2).Select
j = j + 1
Loop

Sheets(1).Select
i = i + 1
Loop

End Sub"
 

sousou

XLDnaute Barbatruc
Re : Copier cellule dans onglet X si présent dans onglet Y

Non sans macro
C'est sans doute le plus simple, mais si tu veux faire disparaitre les lignes non reconnues cela ne suffit pas
Onglet3 colonneA = feuil1!a1
colonne2
=RECHERCHEV(A1;Feuil1!ici ton tableau feuille1;2;FAUX)
formules à copier ensuite sur chaque ligne
 

flint6593

XLDnaute Occasionnel
Re : Copier cellule dans onglet X si présent dans onglet Y

Pour info j'ai trouvé la solution.
J'ai fait un enregistrement de macro et j'ai adapté, voilà le code si ça peut servir:

'Sélectionne la cellule où mettre la formule
Range("B2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'NOM DE LONGLET'!C[-1]:C[3],4,FALSE)"
Selection.AutoFill Destination:=Range("B2:B" & DLigne), Type:=xlFillDefault 'colle la formule sur toute la colonne

'met un format texte dessus et copie en format TEXTE
Columns("B:C").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'remplace #N/A par rien
Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Si ça peut aider!!!
Merci
 

DoubleZero

XLDnaute Barbatruc
Re : Copier cellule dans onglet X si présent dans onglet Y

Bonjour, flint6593, sousou, le Forum,

Une autre façon :

Code:
Option Explicit
Sub Toto()
    With Range("b2:b" & Range("a65536").End(xlUp).Row)
        .FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1],Feuil2!C[-1]:C[2],4,0)),"""",VLOOKUP(RC[-1],Feuil2!C[-1]:C[2],4,0))"
        .Value = .Value
    End With
End Sub

A bientôt :)
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha