none
Modification d'un graphique Excel

    Question

  • Bonjour,

    J'utiliser l'interop Excel pour manipuler des classeurs Excel en C#.

    En Excel 2106 (et 2013) j'ai un souci lors de la modification de graphiques qui ne sont pas visible (plus bas dans la feuille ou sur une autre feuille) et qui n'ont pas encore été "vue" (pas chargé).

    Pour ne pas perdre les modifications de l’utilisateur, je copie/colle un graphique "modèle" que j’applique sur les autres graphiques.

    _ShapeModele.Chart.ChartArea.Copy();
    shapeDestination.Chart.Paste();

    Ces modifications sont bien pris en compte pour les graphiques visibles mais les graphiques plus bas dans la feuille ou sur une autre feuille génère une exception "HRESULT : 0x800A03EC"

    Avez-vous des solutions ?

    Merci






    Vincent BLATTES

    lundi 24 octobre 2016 13:41

Toutes les réponses

  • Bonjour,
    L'erreur HRESULT : 0x800A03EC signifie "file not found", c'est-à-dire vous avez demandé quelque chose spécifique mais Excel ne peut pas le trouver. Comment accédez-vous les graphiques en bas ou sur une autre feuille?

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 25 octobre 2016 13:29
    Modérateur
  • Les graphiques sont retrouvés par identifiants.

    sheet.Shapes.Item(identifiant);

    Et tous les graphiques sont bien retrouvés (même ceux en bas).

    Là ou une erreur est généré, c'est au moment de coller dans le nouveau graphique les informations de mon graphique "modèle".

    shapeDestination.Chart.Paste();

    Ce que je ne comprend pas ces que c'est la seule chose qui ne fonctionne pas. C'est a dire que si je veux par exemple modifier le titre d'un graphique invisible il n'y a pas de problème.

    shapeDestination.Chart.ChartTitle.Delete();
    Le titre est bien supprimé sur tous les graphiques.

    Cordialement

    Vincent BLATTES


    • Modifié Vincent Bl vendredi 28 octobre 2016 08:13 Complément d'info
    mardi 25 octobre 2016 13:47
  • Bonjour,

    Pour contourner le problème de copier/coller, j'aimerais accéder aux éléments (image, formes, etc...) insérés dans une shape pour pouvoir les dupliqués dans d'autres shapes.

    Est-ce possible, Si oui comment faire ?

    Cordialement

    Vincent BLATTES


    jeudi 3 novembre 2016 08:24
  • Bonjour, 

    J'utilise l'Interop Excel pour manipuler des graphiques.

    Pour cela, je copie le contenue d'un graphique que j'applique à d'autres graphiques de la feuille.

    J'ai un bug lors ce que je veux coller le contenu de mon graphique "modèle" sur des graphiques situés en bas de la feuille (hors de l’écran)

    Example (POC): 

    Dans Excel, je créé un graphique en D2, je le modifie  (ajout d'image, forme, changer la couleur de font...), je le nomme "Chart1".

    Je créé un autre graphique en D40 (pour ne pas pouvoir voir les 2 graphes en même temps), je le nomme "Chart2".

    Je remonte sur mon modèle.

    Je ferme et je ré-ouvre le classeur

    Puis j'exécute ce code :

    // Connect
    var applicationExcel = (Excel.Application) Marshal.GetActiveObject("Excel.Application");
    
    // Modif Chart
    Excel.Shapes shapes = applicationExcel.ActiveSheet.Shapes;
    var chartModel = shapes.Item("Chart1"); //D2
    var chartDest = shapes.Item("Chart2"); //D40
    
    chartModel.Chart.ChartArea.Copy();
    chartDest.Chart.Paste(); //Exception de HRESULT : 0x800A03EC

    J'ai une Exception au moment de coller les modifications dans le graphique pas visible.

    Avez-vous une solution, un moyen de contournement ?

    Cordialement 

    Vincent BLATTES


    Vincent BLATTES


    vendredi 4 novembre 2016 09:46