Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Appariage de 2 Colonnes

  • Initiateur de la discussion Initiateur de la discussion joebob
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Re : Appariage de 2 Colonnes

Bonjour Joebob,Dranreb
Si une seule fois rgc=rg,sortir de la boucle pour éviter les comparaisons inutiles
If rgc=rg then
Rgc affiche
Exit for
Endif
Je suis sur téléphone et ne peux tester

A voir?
A+
 
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:
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 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
655
Réponses
3
Affichages
800
Réponses
3
Affichages
583
Réponses
33
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…