Bonjour,

Je suis en train de faire un fichier word avec un titre et un tableau avec des valeurs.

Dans une ligne je mets une valeur avec une puissance de 10. Donc la valeur en exposant.

Je fais le code suivant :

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
       public static void AddTableauCoefficients( CurveParameters curveParameters )
        {
            object start = 0;
            object end = 0;
            MSWord.Range rng0 = m_Word_Document.Range( ref start, ref end );
 
            rng0.FormattedText.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;
            rng0.FormattedText.Text = "TEST Curves";
 
            MSWord.Range rng = m_Word_Document.Range( m_Word_Document.Content.End - 1, m_Word_Document.Content.End - 1 );
 
            int u = 1;
            int count;
 
             count = 1;
 
 
            MSWord.Table theTable = m_Word_Document.Tables.Add( rng, 2, count );
            theTable.Borders.InsideLineStyle = MSWord.WdLineStyle.wdLineStyleSingle;
            theTable.Borders.OutsideLineStyle = MSWord.WdLineStyle.wdLineStyleSingle;
 
            for(int i = 0; i < count; i++)
            {
 
                {
                    theTable.Columns[i + 1].Width = 100;
                    theTable.Cell( 1, u ).Range.Text = ( (EMPLACEMENT)i ).GetDescription();
 
                    double slope = 0.0000006666;
                    double intercept = 55.4;
 
                    string str_slope = slope.ToString( "#0.0e0" );
                    string[] str_slopes = str_slope.Split( new string[] { "e" }, System.StringSplitOptions.None );
 
                    string final = str_slopes[0].Replace( ".", "," ) + ".10" + str_slopes[1];
 
                    MSWord.Range r = theTable.Cell( 2, u ).Range;
 
 
 
                    r.Text = final;
 
                    string v = r.Text;
 
                    r.SetRange( 2, 4 );
 
                    r.Font.Superscript = 1;
 
                    u++;
                }
            }
 
 
 
            m_Word_Document.SaveAs2( m_cheminfichierWord );
            m_Word_Document.Close();
 
            m_Word.Quit();
 
            Marshal.FinalReleaseComObject( m_Word );
            m_Word = null;
 
        }
Le soucis est le suivant.

Pour mettre en exposant, je selectionne le range de la case voulu.
Lorsque je vérifie le contenu,

La variable contient les bonnes valeurs.
Mais quand je mets en exposant,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    r.Font.Superscript = 1;
Cela mets le texte "TEST Curves" en exposant

J'ai trouvé le soucis, le SetRange va selectionner le deuxieme jusqu'au quatrieme caractères document complet (ce qui est débile, mais soit).


Maintenant, j'ai modifié comme cela :

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
                    theTable.Columns[i + 1].Width = 100;
                    theTable.Cell( 1, u ).Range.Text = ( (EMPLACEMENT)i ).GetDescription();
 
                    double slope = 0.0000006666;
                    double intercept = 55.4;
 
                    string str_slope = slope.ToString( "#0.0e0" );
                    string[] str_slopes = str_slope.Split( new string[] { "e" }, System.StringSplitOptions.None );
 
                    string final = str_slopes[0].Replace( ".", "," ) + ".10" + str_slopes[1];
 
                    MSWord.Range r = theTable.Cell( 2, u ).Range;
 
                    r.Text = str_slopes[1];
                    r.Font.Superscript = 1;
 
                    r.InsertBefore( str_slopes[0].Replace( ".", "," ) + ".10" );
 
                    r.InsertAfter("+ " + intercept.ToString("F2"));
 
 
 
                    u++;
Sauf que mainteant, tout le texte de la case est en exposant.

Pourriez vous m'aider ?
Merci.
Florence