Bonjour le forum
Aujourd’hui j'ai besoin de votre aide pour accélérer un traitement que je dois réaliser.
Je dois faire une recherche simple de l'ensemble des éléments d'une colonne dans une autre feuille et affiche un résultat si on trouve une correspondance exacte.
Mon tableau fait aujourd’hui 90000 lignes ce qui rend le calcul trop long j'ai commencé par utilisé la rechercheV qui devait monopoliser mon pc pendant une vingtaine de minutes je suis passé à Index equiv qui était légèrement plus rapidement mais toujours long 15-20 min. J'ai donc rédigé une macro avec for each et find afin d'aller plus vite.
Pouvez vous svp m'aider à améliorer cette macro ou me proposer des solutions plus optimales pour ce type de traitement.
Je vous ai joins un fichier exemple dans celui là on cherche les valeur de la colonne A de l'onglet "All" dans la colonne A de l'onglet "PI-GRN" si on trouve une correspondance on remplit la colonne K de l'onglet "All"
Merci
Aujourd’hui j'ai besoin de votre aide pour accélérer un traitement que je dois réaliser.
Je dois faire une recherche simple de l'ensemble des éléments d'une colonne dans une autre feuille et affiche un résultat si on trouve une correspondance exacte.
Mon tableau fait aujourd’hui 90000 lignes ce qui rend le calcul trop long j'ai commencé par utilisé la rechercheV qui devait monopoliser mon pc pendant une vingtaine de minutes je suis passé à Index equiv qui était légèrement plus rapidement mais toujours long 15-20 min. J'ai donc rédigé une macro avec for each et find afin d'aller plus vite.
Pouvez vous svp m'aider à améliorer cette macro ou me proposer des solutions plus optimales pour ce type de traitement.
Je vous ai joins un fichier exemple dans celui là on cherche les valeur de la colonne A de l'onglet "All" dans la colonne A de l'onglet "PI-GRN" si on trouve une correspondance on remplit la colonne K de l'onglet "All"
Code:
Sub vlookup()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim Trouve As Range, PlageDeRecherche As Range, c As Range
Dim derligne As Long
derligne = Range("A1").End(xlDown).Row
Set PlageDeRecherche = Sheets("PI-GRN").Range("A1:A" & derligne)
For Each c In Sheets("All").UsedRange.Columns("A").Cells
Debug.Print c.Value
With PlageDeRecherche
Set Trouve = .Columns(1).Cells.Find(What:=c.Value)
On Error GoTo 0
If Trouve Is Nothing Then
'AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
c.Offset(0, 10) = Trouve.Offset(0, 1)
End If
End With
Next c
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Merci
Pièces jointes
Dernière édition: