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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| using System;
using Reference = Microsoft.Office.Interop.Excel;
// Pour Directory System.IO
using System.IO;
class projetVBAExcel
{
static void Main() {
// déclaration d'un objet classeur et d'un objet feuille
Reference.Workbook MonClasseur ;
Reference.Worksheet MaFeuille ;
string NomFeuille ;
string NomFichier ;
string Chemin ;
// tableau temporaire récupéré
string [] Tabtemp;
// appel de la procédure qui ouvre Excel avec les deux objets demandés
// Si Chemin vide Nom du fichier Classeur dans le même dossier que l'exe
// Attention à la transparence du caractère "\\"
Chemin="G:\\info Csharp\\Projet\\" ;
NomFichier = "sondage.xls" ;
// Si NomFeuille vide récupère la feuille active
NomFeuille = "" ;
open_classeur(out MaFeuille, out MonClasseur, Chemin, NomFichier, NomFeuille) ;
// La plage doit être nommée
import_excel (out Tabtemp, MaFeuille, "PlageRevenus nets mensuels") ;
int i ;
for(i=0;i<Tabtemp.Length;i=i+1) Console.WriteLine(Tabtemp[i]) ;
}
static void open_classeur(out Reference.Worksheet MaFeuille, out Reference.Workbook MonClasseur, string Chemin, string NomFichier, string NomFeuille)
{
object ParamManquant = System.Reflection.Missing.Value;
// Ouvrir une Application Excel
Reference.Application MonTableur;
MonTableur = new Reference.Application();
// Si Chemin vide Nom du fichier Classeur dans le même dossier que l'exe
// Ouvre un classeur Excel
if (Chemin == "") MonClasseur = MonTableur.Workbooks.Open(Directory.GetCurrentDirectory() + "\\" + NomFichier , ParamManquant, true, ParamManquant, ParamManquant,
ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant);
else MonClasseur = MonTableur.Workbooks.Open(Chemin + NomFichier , ParamManquant, true, ParamManquant, ParamManquant,
ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant, ParamManquant);
// Récupère la feuille contenant la plage à importer
if (NomFeuille != "") MaFeuille = (Reference.Worksheet) MonClasseur.Sheets.get_Item(NomFeuille); // Cast Obligatoire
else MaFeuille = (Reference.Worksheet) MonClasseur.ActiveSheet; // Cast Obligatoire
// Afficher la fenêtre de l'application Excel
MonTableur.Visible = true;
}
static void import_excel (out string [] Tableau, Reference.Worksheet MaFeuille, string NomPlage)
{
int i ;
object ParamManquant = System.Reflection.Missing.Value;
// La plage en sortie correspond à la zone remplie de valeurs
Reference.Range MaPlage = MaFeuille.get_Range(NomPlage , ParamManquant);
//Garnir le tableau
System.Array myvalues = (System.Array)MaPlage.get_Value(ParamManquant) ;
// Réservation de place pour le tableau
Tableau = new string [myvalues.Length] ;
for (i = 1; i <= myvalues.Length; i=i+1)
{
if (myvalues.GetValue(i,1) == null)
Tableau[i-1] = "";
else
Tableau[i-1] = (string)myvalues.GetValue(i,1).ToString();
}
}
static void copie_excel (Reference.Worksheet MaFeuille, string Colonne, string [] Tableau, int N)
{
int i ;
// La plage en sortie correspond à la zone remplie de valeurs
Reference.Range MaPlage = MaFeuille.get_Range(Colonne + 2 , Colonne + N);
//Garnir la feuille de calcul
for (i=0;i<N;i=i+1)
MaPlage.Cells[i, 1] = Tableau[i] ;
}
double i=0;
double j=0;
double N=97.0;
/*les 2 variables suivantes sont les sommes de X et de Y*/
double SomY;
double SomX;
/*les 2 variables suivantes sont les moyennes de X et de Y*/
double Ymoy;
double Xmoy;
/* les 2 variables suivantes sont le numérateur et le dénominateur de l'équation de achap*/
double Numa;
double Dena;
/* les 2 variables suivantes sont les valeurs de a et de b*/
double a;
double b;
/* la variable suivante est la valeur de R2*/
double R2;
/* la variable suivante est la valeur de Y chapeau */
double Ychap;
/*les lignes suivantes calculent et affichent la moyenne de Y */
for (i=0; i<=N; i++)
{
SomY = Ymoy + Tableau[i];
}
Ymoy = SomY/N;
Console.WriteLine("Moyenne des salaires = ");
Ymoy = int.Parse(Console.ReadLine()) ;
/*les lignes suivantes calculent et affichent la moyenne de X*/
for (i=2; i<=N; i++)
{
SomX = Xmoy + Tableau[j];
Xmoy = SomX/N;
}
Console.WriteLine("Moyenne des loyers = ");
Xmoy = int.Parse(Console.ReadLine()) ;
/*
/*les lignes suivantes calculent et affichent la valeur de a */
for (i=0; i<=N; i++)
{
/*les 2 lignes suivantes calculent les numérateur et le dénominateur de a*/
Numa = Numa + ((Tableau[j] - Xmoy) * (Tableau[i] - Ymoy));
Dena = Dena + ((Tableau[j] - Xmoy) * (Tableau[j] - Xmoy));
}
a = Numa/Dena;
Console.WriteLine("Coef. a = ");
a = int.Parse(Console.ReadLine()) ;
/*les lignes suivantes calculent et affichent la valeur de bchap*/
b = Ymoy - a*Xmoy ;
Console.WriteLine("Coef. b = ");
b = int.Parse(Console.ReadLine()) ;
/*les lignes suivantes calculent et affichent la valeur de -bchap/achap qui represente le seuil critique*/
Seuil = -b/a;
Console.WriteLine("Seuil = ");
Seuil = int.Parse(Console.ReadLine()) ;
/*les lignes suivantes calculent et affichent la valeur de Y chapeau*/
Ychap = a*Xmoy + b ;
Console.WriteLine("Ychap = ");
Ychap = int.Parse(Console.ReadLine()) ;
/*les lignes suivantes calculent et affichent le coefficient R² qui le coef. de détermination (Qualité du modéle)
Il faudra insérer un "IF" et en fonction du resultat (> ou < à 0.5) dire si le modéle est valide */
R2 = ((ychap - Ymoy)*(ychap - Ymoy)) / ((Tableau[i] - Ymoy)*(Tableau[i] - Ymoy));
Console.WriteLine("Coef. R² = ");
R2 = int.Parse(Console.ReadLine()) ;
}
}
} |
Partager