comparer 2 colonne et faire une action

kevenpom

XLDnaute Junior
Bonjour, j'essai de comparer 2 colonne sur 2 feuille différente
voula mon problème ses que sa prend un temp fou et no_mrp se recopie sur la collone b.....
Code:
Sub Find_Matches()
    Dim TableFu As Range, no_fu As Range, no_mrp As Range, LastFu As Integer, ws1 As Worksheet, ws2 As Worksheet
    ' no_mrp As Integer, no_fu As Integer,
    Set ws1 = ActiveWorkbook.Sheets("fukanban")
    Set ws2 = ActiveWorkbook.Sheets("fini")
    
    LastFu = ws1.Range("A1").SpecialCells(xlCellTypeLastCell).Row  ' trouver last fu
  
     Set TableFu = ws1.Range("A1:A" + CStr(LastFu))
     
        For Each no_mrp In Selection
            For Each no_fu In TableFu
            If no_mrp = no_fu Then MsgBox (no_mrp)
            no_mrp.Offset(0, 1) = no_mrp
            Next no_fu
        Next no_mrp
    
End Sub

quelle serait la meilleur facon pour faire cette comparaison....
merci en avance
 

skoobi

XLDnaute Barbatruc
Re : comparer 2 colonne et faire une action

Bonjour kevenpom et bienvenue sur XLD,

peut-être en utilisant les propriétés "Find" et"FindNext" mais au fait, quel est la quantité de données à analyser et pourquoi utiliser "Selection" au lieu d'une plage?
 

kevenpom

XLDnaute Junior
Re : comparer 2 colonne et faire une action

voici une partie de mon fichier

quelle serait le code pour optimiser ma comparaison
a tu un exemple avec ton find cell qui serait utile pour mon fichier...

mon macro est findmatch
 

Pièces jointes

  • Classeur1.xls
    43.5 KB · Affichages: 67
  • Classeur1.xls
    43.5 KB · Affichages: 70
  • Classeur1.xls
    43.5 KB · Affichages: 68
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : comparer 2 colonne et faire une action

Re bonjour,

comme tu n'a pas dis à quoi correspond "Selection", je te montre un exemple à adapter:

Code:
Sub essai()
Set ws1 = Sheets("fukanban")
Set ws2 = Sheets("liste")
For Each cellule In ws1.Range([A1], [A1].End(xlDown))
    Set trouve = ws2.Columns("A").Find(cellule.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not trouve Is Nothing Then cellule.Offset(0, 1).Value = cellule.Value
Next
End Sub
 

kevenpom

XLDnaute Junior
Re : comparer 2 colonne et faire une action

Merci

Code:
Sub Find_Matches()
    
    Dim TableFu As Range, TableMrp As Range, no_fu As Range, no_mrp As Range, LastFu As Integer, ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, trouve As Object
    
    Set ws1 = ActiveWorkbook.Sheets("fukanban")
    Set ws2 = ActiveWorkbook.Sheets("fini")
    Set ws3 = ActiveWorkbook.Sheets("liste")
    Set TableMrp = Selection
    
    LastFu = ws1.Range("A1").SpecialCells(xlCellTypeLastCell).Row  ' trouver last fu
    Set TableFu = ws1.Range("A1:A" + CStr(LastFu))
    
    Sheets("FuKanban").Select
    Range("A1:G" + CStr(LastFu)).Select                                 ' trie fu en croissant
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
     
    Sheets("liste").Select
    For Each no_mrp In TableMrp
    Set trouve = TableFu.Find(no_mrp.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not trouve Is Nothing Then no_mrp.Offset(0, 1).Value = no_mrp.Value

Next
End Sub

Mais si je voudrait que la cellule de la tablemrp devienne d'une couleur (si elle se retrouve dans les 2 table)
ses ou je doit écrire sa... pck la elle marque le no_mrp a la colonne b a place
et oui Merci encore ... :D
 

skoobi

XLDnaute Barbatruc
Re : comparer 2 colonne et faire une action

Re bonjour,

merci de faire un effort sur l'écriture, ce n'est pas un "chat" MSN et compagnie ici....
Mais si je voudrait que la cellule de la tablemrp devienne d'une couleur
A quelles plage correspond la "tablemtp"?
car "Set TableMrp = Selection", euhhh je t'ai déjà posé la question d'ailleurs.
 

skoobi

XLDnaute Barbatruc
Re : comparer 2 colonne et faire une action

Re bonjour,

voici le code modifié pour mettre une couleur à la place:
Code:
Sub Find_Matches()
    
    Dim TableFu As Range, TableMrp As Range, no_fu As Range, no_mrp As Range, LastFu As Integer, ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, trouve As Object
    
    Set ws1 = ActiveWorkbook.Sheets("fukanban")
    Set ws2 = ActiveWorkbook.Sheets("fini")
    Set ws3 = ActiveWorkbook.Sheets("liste")
    Set TableMrp = Selection
    
    LastFu = ws1.Range("A1").SpecialCells(xlCellTypeLastCell).Row  ' trouver last fu
    Set TableFu = ws1.Range("A1:A" + CStr(LastFu))
    
    Sheets("FuKanban").Select
    Range("A1:G" + CStr(LastFu)).Select                                 ' trie fu en croissant
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
     
    Sheets("liste").Select
    For Each no_mrp In TableMrp
    Set trouve = TableFu.Find(no_mrp.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not trouve Is Nothing Then [B][COLOR=blue]no_mrp.Interior.ColorIndex = 6 'jaune[/COLOR][/B]
Next
End Sub
 

Discussions similaires

Réponses
13
Affichages
931

Statistiques des forums

Discussions
312 391
Messages
2 087 942
Membres
103 679
dernier inscrit
yprivey3