Jérémie DATHÉE 19/03/2013 B2 Rapport de projet tutoré : Conception d un logiciel sous Visual Basic Express 2010 : 1
2
Déroulement : Introduction ; page 4 I/ Présentation du projet : pages 4-5 Cahier des charges ; page 4 Visual Basic Express 2010 ; pages 4-5 II/ Différentes étapes : pages 6-11 Apprentissage du langage Visual Basic ; page 6 1 ère idée ; page 6 Problèmes/Solutions ; page 7 2 ème idée ; page 7 Problèmes/Solutions ; page 8 Solution finale ; pages 8-11 III/ Bilan personnel : pages 12-13 Aspects négatifs ; page 12 Aspects positifs ; page 12 Commentaire sur le projet ; pages 12-13 Conclusion ; page 13 Sources. page 14 3
Introduction : Dans le cadre de mon cursus, j ai un projet à réaliser. Je dois concevoir un logiciel affichant les notes obtenues par les élèves lors de chaque semestre. Pour cela il me faut utiliser le logiciel Visual Basic. I/ Présentation du projet : Cahier des charges : J ai eu pour objectif de : Recréer un logiciel en Visual Basic ; Utiliser Visual Basic Express 2010 ; Ce logiciel consiste à afficher les notes des étudiants ; Les notes à afficher sont sur un fichier Excel 2010 ; On doit pouvoir visualiser plusieurs informations sur ce logiciel. Visual Basic Express 2010 : J ai utilisé Visual Basic Express 2010, version gratuite de Visual Basic Studio 2010 me permettant de créer des logiciels (exemple :.exe) simplement et rapidement. Pourquoi le choix de la version 2010? Car le logiciel précédent était créé à partir de la version 2005, mais les notes étant sur un fichier Excel 2010, ceci posait des problèmes de compatibilité. 4
Concernant l utilisation de Visual Basic Express, cela est très simple, il y a une partie Conception graphique : Outils de création Onglet de navigation Visualisation du design de la fenêtre Propriété de l objet et une partie programmation : Par exemple, lorsqu on appuie sur le BoutonX1, il se passera telle action. 5
II/ Différentes étapes : Apprentissage Visual Basic : J ai appris le Visual Basic sur internet, ce langage utilise des fonctions toutes prédéfinies, c est un langage de Programmation d Objet, par exemple : TextNOM.Text = ds.tables("databasetest1").rows(i).item(1) La case «TextNOM» affichera comme TEXTE La ligne «i» et la colonne «1» Prend La valeur de la table «DatabaseTest1» Dans 1 ère idée : Ma première idée était de créer tout d abord l interface graphique du logiciel, puis je me suis penché sur la lecture des notes dans un fichier Excel 2010 ; la solution consiste à lire directement les données sur ce fichier : Lire directement Le seul moyen que j ai trouvé, lancer Excel, sans afficher la fenêtre puis charger le fichier.xls. Je viens ensuite créer des variables qui feront l appel à la lecture de données dans ce fichier Excel. 6
Problèmes/Solutions : L inconvénient majeur de cette idée, c est que l on doit lancer Excel pour pouvoir lire les notes, donc cela prend plus de temps à l ordinateur (on observe une certaine lenteur lors de l affichage). Mais lorsqu on quittait le logiciel, Excel était toujours présent dans les Services actifs de Windows, il fallait à chaque fermeture de l afficheur de note, «killer» Excel.exe. 2 ème idée : La deuxième idée consistait à créer une base de données à partir du fichier Excel. Pour cela, il existe une gestion de base de données intégrée à Visual Basic Express 2010. J ai donc créé une base de données à partir du fichier Excel : «Importation» du fichier.xls Création de la base de données Affichage des notes à l aide de la base de données 7
Problèmes/Solutions : Je n ai pas trouvé de solution directe pour lire un fichier Excel et le transformer en base de données à partir de Visual Basic. J ai donc opté pour conserver néanmoins l idée de la base de données, en recherchant des solutions à partir d autres logiciels. Solution finale : Cette dernière consiste à créer une base de données avec le logiciel Microsoft Access. En important tout simplement le fichier.xls, j obtiens une base de données semblable au fichier Excel mais lisible par Visual Basic Express : Importation d un fichier Excel Tables sur la base de données Table liée au fichier Excel 8
La table liée permet d avoir une liaison avec le fichier Excel, cela permet donc la lecture mais aussi l écriture à partir du logiciel d affichage. Voilà la structure de cette dernière solution choisie : Importation du fichier Excel Création de la base de données avec Access Affichage des notes à l aide de la base de données J ai eu quelques petites complications concernant la connexion de la base de données sur mon logiciel, j ai dû indiquer la version nécessaire à la lecture : Private Sub ButtonX1_Click(sender As System.Object, e As System.EventArgs) Handles ButtonX1.Click Action lorsqu on clique sur le boutonx1 9
Version 2012 de la base de données sur Access choix = 1 dbprovider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;" données de access 2012 'Microsoft.ACE.OLEDB.12.0 'Microsoft.Jet.OLEDB.4.0 ' lecture des bases de '-----------Dossier de la base de donnée-------------------------------- dbsource = "Data Source = C:/Users/Jérémie/Documents/IUT GEII 2012 2013/Projet Tutoré/DatabaseTest1.accdb" '----------------------------------------------------------------------- '-----------Connexion à la base de donnée------------------------------- con.connectionstring = dbprovider & dbsource con.open() '----------------------------------------------------------------------- sql = "SELECT * FROM Notes_projet_tut" variable qui prendra en compte la requète SQL da = New OleDb.OleDbDataAdapter(sql, con) da.fill(ds, "DatabaseTest1") MsgBox("Database est ouverte") message pour dire que nous sommes connectés à la base de donnée con.close() de donnée ' on définit une ' on affiche un ' fermeture de la base '---------Opération de détection du nombre de ligne----------------- ' on compte le nombre de ligne avec une écriture dedans, cela permet de detecter la fin de la base de donnée. ' On s'en servira pour limiter le nombre d'appui sur les bouton "Haut" et "Bas". MaxRows = ds.tables("databasetest1").rows.count '---------------------------------------------------------------------- 'MsgBox("Database est fermée") i = 1 End Sub Pour l affichage des notes, j utilise une fonction simple : If IsDBNull(ds.Tables("DatabaseTest1").Rows(i).Item(13)) Then Text1_1.Text = "" Else Text1_1.Text = ds.tables("databasetest1").rows(i).item(13) End If Je fais appel à la base de données «DatabaseTest1» à la ligne «i» qui est une variable que j incrémente ou décrémente. Je fais un Test de type «if then else end if» pour tester si la valeur sélectionnée dans la table est nulle. Si c est le cas alors je n affiche rien. 10
J applique ces lignes de codes pour toutes les cases qui afficheront une note. De plus, je change le nom des «Labels» (du texte qui s affiche) selon les matières et le semestre : Label1_1.Text = "Test" Label1_2.Text = "S51" Label1_3.Visible = False Label1_4.Visible = False Label1_5.Visible = False Label1_6.Text = "MA11" Je cache les «Labels» qui sont inutiles en fonction du semestre Pour le changement d élève, j utilise une variable «i» que je mets à 0 lors de la connexion à la base de données. Lorsqu on clique sur le bouton «Haut» (ButtonX4_Click), je fais un premier test si i est différent de «MaxRows» (Nombre de ligne comptée de la base de donnée, mise dans une variable MaxRows). Alors j incrémente «i». Private Sub ButtonX4_Click(sender As System.Object, e As System.EventArgs) Handles ButtonX4.Click If (i <> MaxRows - 1) Then i = i + 1 If (choix = 2) Then NavigateRecordsUE1_Semestre2() NavigateRecordsUE2_Semestre2() NavigateRecordsUE3_Semestre2() ElseIf (choix = 1) Then NavigateRecordsUE1() NavigateRecordsUE2() NavigateRecordsUE3() End If Else MsgBox("No More Rows") End If End Sub Le deuxième test consiste à savoir si on veut le semestre 1 ou le semestre 2. Pour cela lorsqu on clique sur «Semestre 1» je mets une variable «choix» à 1 dans une autre sous fonction appelée «Private Sub ButtonX1_Click». Et je fais appel aux sous fonctions «NavigateRecordsUE1()» qui affichent les notes dans les cases. 11
III/ Bilan personnel : Aspects Négatifs : J ai eu quelques difficultés à trouver des informations utiles pour le langage Visual Basic 2010 Express, alors qu il existe énormément d informations concernant le Visual Basic pour Excel (exemple : les macros). Les deux langages ne sont pas exactement les mêmes, certaines fonctions ne sont pas compatibles entre elles. Enfin pour moi, le plus difficile, a été de lire et d interpréter le fichier Excel dans lequel se trouvaient les notes, en effet, il me semble est un peu «désordonné», mais il est probable qu il n y avait pas d autres alternatives. Aspects Positifs : J ai pu apprendre un nouveau langage de programmation de type Programmation d Objet. La création d un logiciel s effectue à la fois simplement et rapidement. Dès que l on maitrise les fonctions principales de Visual Basic, alors la réalisation du programme devient fluide et aisée. L utilisation d Access m a beaucoup appris concernant les bases de données, en particulier la création à partir d un fichier.txt ou d un fichier.xls, voire la créer soit même. Commentaire sur le projet : Je trouve que ce projet a été très intéressant, tout d abord du point de vue programmation, ceci me permettant d apprendre un nouveau langage, mais aussi du point de vue conception de logiciel, me permettant de comprendre la création de logiciels. Le simple fait d afficher des notes sur un programme parait facile, seulement c est un peu plus compliqué. Une simple connexion avec le fichier Excel au logiciel aurait été idéale, mais 12
je n ai pas trouvé comment faire. Je pense (voire quasiment certain) que cette liaison est possible, car on travaille sur un ensemble appartenant à la même compagnie (Microsoft), pour preuve j ai réussi à lire une base de données Access. Si toutefois cette idée est impossible, on peut envisager de créer directement le programme sous Excel pour lire les notes, ou encore, convertir le fichier.xls en fichier.csv ou.txt (tous deux des fichiers textes) et les lire sur le programme créer sur VB Express, alors évitant ainsi les problèmes de version d Excel. Conclusion : Ce projet m a personnellement beaucoup apporté, tout d abord sur les aspects de conception d un logiciel sous Visual Basic Express 2010, mais également, ce savoir-faire présent dans mon CV, m a permis d obtenir un entretien avec une grande entreprise dans le cadre de mon stage de fin d études. Bien qu ayant réussi toutes les parties indépendantes de ce logiciel, sans toutefois pouvoir les assembler par manque de temps, il m est alors impossible de fournir un programme abouti. 13
Sources : http://www.siteduzero.com/ http://www.homeandlearn.co.uk/net/nets12p2ed.html http://www.devcomponents.com/dotnetbar/download.aspx http://www.vbfrance.com/forum/sujet-partir-form1-ouvrir-form2_1431044.aspx http://www.developpez.net/forums/d1191083/dotnet/langages/vb-net/cryptage-passeacces-base-donneees/ http://www.developpez.net/forums/d1029368/logiciels/microsoft-office/excel/macros-vbaexcel/importation-fichier-csv-vba/ http://www.developpez.net/forums/d367105/logiciels/microsoft-office/access/vbaaccess/vba-access-lier-table-base-externe/ http://www.developpez.net/forums/d571368/logiciels/microsoft-office/access/vbaaccess/import-fichier-csv-access-vb/ http://www.vbfrance.com/forum/sujet-gerer-croix-fermeture-form- PRINCIPALE_889471.aspx http://www.developpez.net/forums/d954618/dotnet/langages/vb-net/vb-2010-expresexcel/ 14