Bonjour Le Forum
J'ai un souci j'ai deux feuilles dans chaque feuille il y a des données je voudrais récupérer une valeur de la feuille1 (colonne E) et l'inscrire à la feuille2 (colonne H) si les valeurs de la colonne C et G de la feuille 1 sont identiques à celle de la feuille2. Je passe par les tableaux pour besoin de rapidité (comme lu dans le forum) je commence par nommer mes tableaux à partir de la colonne C (selon les enseignement du forum).
Voici ce que j'ai essayé de faire mais ça rame très lent car j'ai près de 35000 lignes.
Pourriez vous me donner une solution optimale VBA
Merci d'avance
----------------------------------------
Dim F1 As Worksheet
Dim F2 As Worksheet
Dim tablo1()
Dim tablo2()
Dim tablo3()
Sub rechercher()
Set F1 = Feuil1
Set F2 = Feuil2
tablo1 = F1.[C2].Resize(F1.[c35000].End(xlUp).Row - 1, 5).Value
tablo2 = F2.[C2].Resize(F2.[c35000].End(xlUp).Row - 1, 5).Value
ReDim tablo3(1 To UBound(tablo2, 1), 1 To 2)
For i = 1 To UBound(tablo2, 1)
For j = 1 To UBound(tablo1, 1)
If tablo2(i, 1) = tablo1(j, 1) And tablo2(i, 5) = tablo1(j, 4) Then F2.Range("H" & i + 1) = tablo1(j, 3): GoTo 0 'tablo3(i,1)=tablo1(j,4)
Next
0 Next
'F2.[g2].Resize(UBound(tablo2, 1), UBound(tablo2, 2)).Value2 = tablo3
End Sub
J'ai un souci j'ai deux feuilles dans chaque feuille il y a des données je voudrais récupérer une valeur de la feuille1 (colonne E) et l'inscrire à la feuille2 (colonne H) si les valeurs de la colonne C et G de la feuille 1 sont identiques à celle de la feuille2. Je passe par les tableaux pour besoin de rapidité (comme lu dans le forum) je commence par nommer mes tableaux à partir de la colonne C (selon les enseignement du forum).
Voici ce que j'ai essayé de faire mais ça rame très lent car j'ai près de 35000 lignes.
Pourriez vous me donner une solution optimale VBA
Merci d'avance
----------------------------------------
Dim F1 As Worksheet
Dim F2 As Worksheet
Dim tablo1()
Dim tablo2()
Dim tablo3()
Sub rechercher()
Set F1 = Feuil1
Set F2 = Feuil2
tablo1 = F1.[C2].Resize(F1.[c35000].End(xlUp).Row - 1, 5).Value
tablo2 = F2.[C2].Resize(F2.[c35000].End(xlUp).Row - 1, 5).Value
ReDim tablo3(1 To UBound(tablo2, 1), 1 To 2)
For i = 1 To UBound(tablo2, 1)
For j = 1 To UBound(tablo1, 1)
If tablo2(i, 1) = tablo1(j, 1) And tablo2(i, 5) = tablo1(j, 4) Then F2.Range("H" & i + 1) = tablo1(j, 3): GoTo 0 'tablo3(i,1)=tablo1(j,4)
Next
0 Next
'F2.[g2].Resize(UBound(tablo2, 1), UBound(tablo2, 2)).Value2 = tablo3
End Sub