Indexes in VBA aren't zero based, so when going from .Net to Excel Interop, you start at 1 even though indexes in C# are, so change this:
ChartObject chart = ((ChartObject)charts.Item (0));
To this:
ChartObject chart = ((ChartObject)charts.Item (1));