XL 2016 Si doublon dans une colonne copier des valeurs sur la même ligne que la cellule recherchée

Surferdargent

XLDnaute Nouveau
VB:
Option Explicit



Sub Recopie_doublon()
Dim Cel As Range
Dim J As Long
Application.ScreenUpdating = False

With Sheets("Feuil1")
For J = 2 To Range("F" & Rows.Count).End(xlUp).Row
Set Cel = .Columns("F").Find(what:=Range("F" & J), LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Range("A" & J).Copy Cel.End(xlToRight).Offset(0, 1) 

Range("I" & J).Copy Cel.End(xlToRight).Offset(0, 1)

End If
Next J
End With
Application.ScreenUpdating = True
Sheets("Feuil1").Activate
End Sub


Bonjour
Besoin d'un petit coup de main j'ai un code qui est très pratique mais très lent car j'ai des données qui peuvent atteindre 200 000 lignes ( 15 min )...
Le code parcourt la colonne et lorsqu'il trouve un doublon dans la colonne F il copie les valeurs des colonnes A et J de la ligne trouvée sur la même ligne que la valeur de la cellule recherchée.
Dans le fichier joint j'ai mis le code avec un tableau avant et après macro
D'avance merci
 

Pièces jointes

  • Test2.xlsm
    18.6 KB · Affichages: 28
Solution
Bonjour j'ai étudié ton code c'est pas simple mais avec tes explications c'est un peu plus clair. Pour les tests je testerais au boulot demain.Je te remercie pour le temps que tu as passé sur ma problématique cela m'a bien aidé et fait gagner du temps. Merci beaucoup.
Bonjour Yal il a mis 4 min pour traiter 100 000 lignes environs , cool , ca me va !!! Encore merci à tous les deux .

Fred0o

XLDnaute Barbatruc
Bonjour Surferdargent

J'ai essaye d'optiser ton code et je l'ai este sur 20000 lignes.
Ancien code : 4 minutes et 10 secondes
Nouveau code : 20 secondes

Puis teste le nouveau code sur 100000 lignes : 1 minute et 54 secondes.

Voir le fichier ci-joint
 

Pièces jointes

  • Test2_V1.xlsm
    227.3 KB · Affichages: 19

Surferdargent

XLDnaute Nouveau
Bonjour Merci pour la réactivité et le code je viens de le tester au boulot il a mis 34 min pour 157000 lignes c'est encore trop lent quand je disais 15 min c'était sur un PC puissant chez moi. Donc ton code est beaucoup plus rapide que le mien donc je le garde au chaud pour des fichiers moins volumineux...Si tu as une autre idée je suis preneur, encore merci.
 

yal

XLDnaute Occasionnel
J'ai mis des commentaires dans le code. J'espère que ça éclaircira. Si besoin n'hésites pas à poser tes questions.
J'aimerais bien savoir les résultats des tests.
 

Pièces jointes

  • Test2 yal.xlsm
    20.2 KB · Affichages: 27

Surferdargent

XLDnaute Nouveau
Bonjour j'ai étudié ton code c'est pas simple mais avec tes explications c'est un peu plus clair. Pour les tests je testerais au boulot demain.Je te remercie pour le temps que tu as passé sur ma problématique cela m'a bien aidé et fait gagner du temps. Merci beaucoup.
 

Surferdargent

XLDnaute Nouveau
Bonjour j'ai étudié ton code c'est pas simple mais avec tes explications c'est un peu plus clair. Pour les tests je testerais au boulot demain.Je te remercie pour le temps que tu as passé sur ma problématique cela m'a bien aidé et fait gagner du temps. Merci beaucoup.
Bonjour Yal il a mis 4 min pour traiter 100 000 lignes environs , cool , ca me va !!! Encore merci à tous les deux .
 

Discussions similaires

Réponses
2
Affichages
129

Statistiques des forums

Discussions
311 720
Messages
2 081 923
Membres
101 840
dernier inscrit
SamynoT