Appariage de 2 Colonnes

joebob

XLDnaute Nouveau
Bonjour à tous,
je voudrais d'abord commencer par remercier tous les membres actifs de ce forum qui m'a été très utile.
Mais voila : j'ai un problème auquel je n'ai pas réussi à trouver une solution :
J'ai 2 bases de données contenues chacunes sur 2 onglets d'un classeur Excel. Ces 2 bases contiennent des données complètement différentes, sauf pour l'identitfiant client. J'aimerai pouvoir récupérer une information contenue dans une colonne de la feuille 1 pour la mettre dans une colonne de la feuille 2, et cela en face du numéro client correspondant. Seulement voilà : ma première base contient 15 000 client alors que la deuxieme n'en contient que 5 000, les 2 bases n'étant pas triées par numéro client pour des raisons d'utilisation.

J'ai tenté le code suivant :

Code:
Private Sub YATA()
    Dim i As Long
    Dim rg, rgC As Range
    t = Timer
    For Each rg In Sheets("Suivi").Range("D2:D" & Sheets("Suivi").Range("D2").End(xlDown).Row)
        For Each rgC In Sheets("Clients").Range("F2:F" & Sheets("Clients").Range("F2").End(xlDown).Row)
            If rgC.Value = rg.Value Then rgC.Offset(0, 85).Value = rg.Offset(0, 31).Value
        Next rgC
    Next rg
    MsgBox (Timer - t)
End Sub

Ce code marche MAIS .... il prend environ 15 minutes ...

Je cherche donc une solution plus rapide. Quelqu'un pourrait m'aider svp ?

Merci d'avance
 

Softmama

XLDnaute Accro
Re : Appariage de 2 Colonnes

Bonjour,

Sauf erreur de ma part sur le décalage de colonnes (85 par là, 31 par ici...), ceci devrait être largement plus rapide :

VB:
Sub YATA()
    With Sheets("Clients").Range("IV2:IV" &  Sheets("Clients").Range("F2").End(xlDown).Row)
      .FormulaR1C1 = "=If(ISERROR(MATCH(RC[-250],Suivi!R1C4:R" & Sheets("Suivi").Range("D2").End(xlDown).Row & "C4,0)),"""",1)"
      .Value = .Value
      .SpecialCells(xlCellTypeConstants, 15).Offset(0, -165).FormulaR1C1 = "=RC37"
      .SpecialCells(xlCellTypeConstants, 15).Offset(0, -165).Value = .SpecialCells(xlCellTypeConstants, 15).Offset(0, -165).Value
  End With
Range("IV:IV").clear
End Sub
 
Dernière édition:

joebob

XLDnaute Nouveau
Re : Appariage de 2 Colonnes

Merci à tous pour vos réponses :)

J'ai testé les 3 solutions, et (même si je n'ai pas bien réussit a faire marcher celle de Softmama), c'est celle de Danreb qui est la plus rapide (plutôt impressionant par rapport au 15 minutes que j'avais au départ d'ailleurs ... je sous-estime un peu trop les fonctions intégrées à Excel je crois ... Même si je ne connaissais pas celle là)

Ca faisait depuis ce matin que j'étais bloqué dessus, donc un grand merci à vous :)
 

Discussions similaires