1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Sub Test()
Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage_Fe1 As Range
Dim Plage_Fe2 As Range
Dim Cel_Fe1 As Range
Dim Cel_Fe2 As Range
Set Fe1 = Worksheets("Feuil1")
Set Fe2 = Worksheets("Feuil2")
'défini la plage 1 sur la colonne A de la feuille "Feuil1"
With Fe1: Set Plage_Fe1 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
'défini la plage 2 sur la colonne A de la feuille "Feuil2"
With Fe2: Set Plage_Fe2 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
'parcours la plage de la feuille "Feuil1"
'-->- Comparer chaque cellule de la colonneA de la feuille1 à celles de la feuille2<--
For Each Cel_Fe1 In Plage_Fe1
'effectue la recherche de la valeur dans la colonne A de la feuille "Feuil2"
'-->- Si la valeur d'une cellule de la colonneA de la feuille 1 correspond à l'une des
'cellules de la colonneA de la seconde feuille alors reprendre l'opération précédente mais cette fois avec les colonnes B des deux feuilles<--
Set Cel_Fe2 = Plage_Fe2.Find(Cel_Fe1, , xlValues, xlWhole)
'si trouvée...
If Not Cel_Fe2 Is Nothing Then
'si les cellules de la colonne B de chaque feuilles sont aussi identiques
'copie sur la feuille "Feuil1" en transposant les valeurs de la feuille "Feuil2" de C à AA
'-->- Si correspondance pour les colonnesB alors copier la ligne concernée (de C à AA) dans
'la feuille2 et la coller en la transposant dans la feuille1(à partir de la ligne où il y a correspondance)<--
If Cel_Fe2.Offset(, 1).Value = Cel_Fe1.Offset(, 1).Value Then
Fe1.Range(Cel_Fe1.Offset(, 2), Cel_Fe1.Offset(24, 2)).Value = WorksheetFunction.Transpose(Fe2.Range(Cel_Fe2.Offset(, 2), Cel_Fe2.Offset(, 26)).Value)
End If
End If
'-->- reprendre la procédure jusqu'à la fin de la feuille 1<--
Next Cel_Fe1
End Sub |
Partager