public static void supprChart(WorksheetPart worksheetPart, string titre) { DrawingsPart a = worksheetPart.DrawingsPart; DrawingsPart dp = worksheetPart.DrawingsPart; IEnumerable <ChartPart> cps = a.ChartParts; ChartPart b = null; foreach (ChartPart cp in cps) { if (cp.ChartSpace.Descendants <Chart.Chart>().First().Descendants <Chart.Title>().First().Descendants <DocumentFormat.OpenXml.Drawing.Run>().First().Text.Text == titre) { b = cp; } } //obtention id du modèle string id = a.GetIdOfPart(b); a.DeletePart(b); //Suppression de l'ancre associée DocumentFormat.OpenXml.Drawing.Spreadsheet.WorksheetDrawing wsd = a.WorksheetDrawing; foreach (Draw.TwoCellAnchor tca in wsd.Elements <Draw.TwoCellAnchor>()) { string tmp = tca.Descendants <Chart.ChartReference>().First().Id; if (tmp == id) { tca.Remove(); } } }