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 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
| 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 ;
// 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="C:\\Documents and Settings\\etud\\Bureau\\" ;
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
string [] Tabpro ;
string [] Tabsexe ;
string [] Tabage ;
string [] Tabmaritale ;
string [] Tabville ;
string [] Tabrevenus ;
string [] Tablogement ;
string [] Tabtransport ;
string [] Tabloisirs ;
string [] Tabtelecommunication ;
import_excel (out Tabpro, MaFeuille, "pro") ;
import_excel (out Tabsexe, MaFeuille, "sexe") ;
import_excel (out Tabage, MaFeuille, "age") ;
import_excel (out Tabmaritale, MaFeuille, "maritale") ;
import_excel (out Tabville, MaFeuille, "ville") ;
import_excel (out Tabrevenus, MaFeuille, "revenus") ;
import_excel (out Tablogement, MaFeuille, "logement") ;
import_excel (out Tabtransport, MaFeuille, "transport") ;
import_excel (out Tabloisirs, MaFeuille, "loisirs") ;
import_excel (out Tabtelecommunication, MaFeuille, "telecommunication") ;
//double [] pro = new double [100];
//double [] sexe = new double [100];
//double [] age = new double [100];
//double [] maritale = new double [100];
//double [] ville = new double [100];
double [] revenus = new double [100];
double [] logement = new double [100];
double [] transport = new double [100];
double [] loisirs = new double [100];
double [] telecommunication = new double [100];
//double N = Tab?.Length ;
int i=0;
for (i=0; i<N; i++)
{
revenus[i] = double.Parse(Tabrevenus[i]);
logement[i] = double.Parse(Tablogement[i]);
transport[i] = double.Parse(Tabtransport[i]);
loisirs[i] = double.Parse(Tabloisirs[i]);
telecommunication[i] = double.Parse(Tabtelecommunication[i]);
}
for {i=[1,10];
}
/*les 2 variables suivantes sont les sommes de X et de Y*/
double SomY = 0.0;
double SomX = 0.0;
/*les 2 variables suivantes sont les moyennes de X et de Y*/
double Ymoy = 0.0;
double Xmoy = 0.0;
/* les 2 variables suivantes sont le numérateur et le dénominateur de l'équation de achap*/
double Numa = 0.0;
double Dena = 0.0;
/* les 2 variables suivantes sont les valeurs de a et de b*/
double a = 0.0;
double b = 0.0;
double Seuil = 0.0;
/* la variable suivante est la valeur de R2*/
double R2 = 0.0;
/* la variable suivante est la valeur de Y chapeau */
double Ychap = 0.0;
/*les lignes suivantes calculent et affichent la moyenne de Y */
for (i=0; i<N; i++)
{
SomY = SomY + revenus[i];
}
Ymoy = SomY/N;
Console.WriteLine("\nMoyenne des salaires = "+ Math.Round(Ymoy,2) + " euros");
/*les lignes suivantes calculent et affichent la moyenne de X*/
for (i=0; i<N; i++)
{
SomX = SomX + logement[i];
Xmoy = SomX/N;
}
Console.WriteLine("Moyenne des loyers = "+ Math.Round(Xmoy,2)+ " euros");
/*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 + ((logement[i] - Xmoy) * (revenus[i] - Ymoy));
Dena = Dena + ((logement[i] - Xmoy) * (logement[i] - Xmoy));
}
a = Numa/Dena;
Console.WriteLine("\nCoefficient a = "+ Math.Round(a,3));
/*les lignes suivantes calculent et affichent la valeur de bchap*/
b = Ymoy - a*Xmoy ;
Console.WriteLine("Coefficient b = "+ Math.Round(b,3) );
/*les lignes suivantes calculent et affichent la valeur de -bchap/achap qui represente le seuil critique*/
Seuil = -b/a;
Console.WriteLine("\nSeuil = " + Math.Round(Seuil,3));
/*les lignes suivantes calculent et affichent la valeur de Y chapeau*/
Ychap = a*logement[i] + b ;
//Console.WriteLine("\nYchap = "+ Ychap);
/*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)) / ((revenus[i] - Ymoy)*(revenus [i]- Ymoy));
Console.WriteLine("\nLe coefficient de détermination R² est "+ Math.Round(R2,3));
if (R2 <= 0.5 )
Console.WriteLine("\nR² est trop faible, notre modéle n'est pas correctement spécifié." ) ;
else
Console.WriteLine("\nR² est supérieur à 50%, notre modéle est correctement spécifié." ) ;
}
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();
// 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=2;i<N;i=i+1)
MaPlage.Cells[i, 1] = Tableau[i] ;
}
} |
Partager