1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Then 'donc, si la cellule est D4
With Sheets("Source") 'sur feuill "source"
Set Dc = .Cells(2, .Cells.Columns.Count).End(xlToLeft) 'Dc donne la dernière colonne utilisée
'ci-dessous, on cherche en ligne 2, la valeur de D4 (de la feuille "Résultat")
'et on donne à la variable "TbCherche", l'objet "Range" D4
Set TbCherche = .Range("B2", Dc).Find(Target)
'ci-dessous, tbl est un tableau (en mémoire) qui prend la valeur de la plage (en feuille "Source")
'A3:C5 ou E3:G5 ou I3:K5, suivant le choix en D4
tbl = .Range(TbCherche(2, 0), TbCherche(4, 2))
End With 'fin de référence à Source"
Range("D7") = TbCherche 'on rend à D7, la valeur de D4 (à aménager, au besoin)
'ci-dessous on mets en forme le tableau obtenu (à aménager, au besoin)
Application.Union(Range("D4"), Range("D7"), Range("C9:E9")).Interior.Color = TbCherche.Interior.Color
Range("C8:E10").Borders.Color = TbCherche.Interior.Color
Range("C8:E10").ClearContents 'ici, on vide les valeurs
'pour réaffecter les nouvelles, ci-dessous
Range("C8:E10") = tbl
End If
End Sub |
Partager