Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Byte 'déclare la variable col (COLonne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
'si le changement a lieu sur une autre colonne que la colonne 1 (=A) ou dans la ligne 1, sort de la procédure
If Target.Column <> 1 Or Target.Row = 1 Then Exit Sub
With Sheets("Feuille1") 'prend en compte l'onglet "Feuille1"
col = .Rows(1).Find(Target.Value, , xlValues, xlWhole).Column 'définit la colonne col
Set pl = .Range(.Cells(3, col), .Cells(27, col)) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
'condition : si le fond de la cellule est vert clair ou vert foncé
If cel.Interior.ColorIndex = 43 Or cel.Interior.ColorIndex = 10 Then
Set dest = Cells(Target.Row, Application.Columns.Count).End(xlToLeft).Offset(0, 1) 'définit la cellule de destination (à adapter car tu n'as pas préciser)
cel.Copy dest 'copy la cellule cel et la colle dans dest
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en en compte de l'onglet "Feuille1"
End Sub