IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

affecter formule dans excel : toujours #NOM?


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut affecter formule dans excel : toujours #NOM?
    Bonjour,

    Dans un projet ou je créer une fiche de facturation via excel, j'essaye d'affecter dans le code c# des formules a appliquer.

    Pour cela, j'essaye par exemple les codes suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                   xlsSheet.Cells[20, 5].Formula = "=somme(B1:B4)";
     
                   // ou 
     
                   xlsSheet.get_Range("B20", "B20").Formula = "=somme(B1:B5)";
    Le code est exécuter correctement sauf que à l'ouverture de mon fichier mes cellule contienne l'erreur suivante : #NOM? Au lieu d'avoir le resultat de ma formule.

    Si je clique sur la formule et que je la valide sans rien changer dans ce cas la ma formule fonctionne normalement

    Avais vous une idée, du problème svp. j'ai essayer des cast en string ... mais toujours sans résultat

    Merci

  2. #2
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Merci pour ton lien,

    L'erreur venais en faite du fait que j'écrivais
    Au lieu de
    Par contre le code fonctionne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      xlsSheet.get_Range("B20", "B20").Formula = "=sum(B1:B5)";
    Mais pas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      xlsSheet.Cells[20, 5].Formula = "=somme(B1:B4)";
    Or comme j'ai besoin de me promener dans mon tableau me servant pour la facturation il me serai plus signe de retrouver mes cellules (Cells) que par numéro plutôt que par get_Range. (Vu que je ne pourrais pas definir que je me trouve sur la colonne B par exemple.

    Savez vous s'il est possible de faire fonctionner ce code, ou si vous avez une alternative

    Merci d'avance

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour brialex
    Savez vous s'il est possible de faire fonctionner ce code, ou si vous avez une alternative
    L'alternative simple est un detour par Mr Range:

    code .cs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Office.Interop;
    using XL=Microsoft.Office.Interop.Excel ;
    using System.Runtime.InteropServices;
    namespace WinExcelApp
    {
        public partial class Form1 : Form
        {
            private XL.Application xlapp;
            private XL.Workbook  xlsBook;
            private XL.Worksheet xlsSheet;
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                xlapp = new XL.Application();
                xlsBook = xlapp.Workbooks.Add();
                xlsSheet = xlsBook.Worksheets[1];
     
                xlapp.Visible = true;
     
     
                //exemple avec indice  
                // on remplit les lignes de 1 à 6 colonne 4(D)
                for (int i = 1; i < 7; i++)
                {
                    xlsSheet.Cells[i, 4].value = 5.0;
     
                }
     
                XL.Range  rng1 =null;
                XL.Range  rng2 =null;
                rng1=xlsSheet.Cells[7,4];
                rng2=xlsSheet.Cells[7,4];
     
                xlsSheet.get_Range(rng1,rng1).Formula= "=sum(D1:D6)";
                xlsSheet.get_Range(rng1, rng1).Cells.Interior.Color = ColorTranslator.ToOle(Color.Red);
     
     
                //Ton cas 
                //xlsSheet.get_Range("B20", "B20").Formula = "=sum(B1:B5)"; 
     
                rng1 = xlsSheet.Cells[20, 2]; //b20
                rng2 = xlsSheet.Cells[20, 2]; //b20
     
                xlsSheet.get_Range(rng1, rng1).Formula = "=sum(B1:B5)";
                xlsSheet.get_Range(rng1, rng1).Cells.Interior.Color = ColorTranslator.ToOle(Color.LightBlue);
     
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                if (xlapp != null)
                {
                    xlsSheet = null;
                    xlsBook = null;
     
                    xlapp.Quit();
                    Marshal.ReleaseComObject(xlapp);
                    xlapp = null;
                }
            }
     
     
        }
    }
    bon code.....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    J'ai bien pensé au fait de passer par un get_Range, ce qui me pose problème c'est que mon fichier excel est remplie en fonction de plusieurs choix fais par l'utilisateur dans une étape précédente.

    En fonction des éléments concerner je peux avoir a travailler de nombreuses colonne est de nombreuses ligne et je ne vois pas comment savoir si je suis sur la colonne 'B' ou la colonne 'BB' par exemple.

    Je vais essayé de contourner le problème grâce a ta proposition.

    Merci en tous cas de votre aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    En effet, la solution proposé par MABROUKI répond exactement a mon problème.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Masquer les formules dans Excel 2007
    Par ruru9 dans le forum Excel
    Réponses: 1
    Dernier message: 08/01/2008, 15h43
  2. formule dans excel NB.SI(plage;critère)
    Par <philhub dans le forum Excel
    Réponses: 13
    Dernier message: 18/10/2007, 09h51
  3. Insertion de formule dans Excel
    Par PIALOU dans le forum VBScript
    Réponses: 4
    Dernier message: 09/10/2007, 23h59
  4. formule dans Excel
    Par magictom42 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/10/2006, 14h00
  5. PRoblème de formule dans Excel
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/05/2006, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo