[VB.NET] Projet Informatique PTI BTS

Projet Informatique PTI BTS [VB.NET] - VB/VBA/VBS - Programmation

Marsh Posté le 17-02-2010 à 09:50:37    

Bien le bonjour !
 
J'expose mon problème, actuellement en BTS info en alternance je dois réaliser des PTI (des TP info à présenter devant un jury dans 1.5 ans) qui doivent remplir certaines conditions tel que :
 
-Gestion Client /Serveur
-Programmation Objet
-Suivi et évolution d'une appli
-Optimisation de l'appli
-etc etc...  
 
Dans ce but j'ai réalisé une application en VB.NET pour mon entreprise.
Cette application a pour le moment 2 buts :  
 
-Création d'un fichier excel avec la liste de tous les contacts clients de la boite en fonction de n paramètres
-Importation sous outlook 2003 de ces contacts dans un carnet de contacts situé dans DossierPublics/TouslesDossiersPublics/Toto par ex
 
Je viens vers vous pour que vous commentiez le code que j'ai réalisé (novice en VB j'ai du apprendre de zéro) et que si possible vous proposiez des pistes d'optimisation du code ou d'implémentations supplémentaires
 
NB : pour les implémentations supplémentaire mon Boss ma suggéré que la requête SQL exécutée en "Dur" dans mon  code ce serait plus judicieux de la placer dans un fichier .INI lu par une fonction en VB.NET pour gérer justement plusieurs type de requêtes "importations de contacts"

Citation :

Création d'un fichier excel avec la liste de tous les contacts clients de la boite en fonction de n paramètres


 
Voilà le code complet commenté de partout :  
 

Code :
  1. Imports Excel
  2. 'Module permettant d'importer le code VB6 qui est dans la premiere sub en .NET
  3. Module UpgradeSupport
  4.     Friend OutlookApplication_definst As New Outlook.Application
  5. End Module
  6. Public Class Form2
  7.     Private Sub Form2_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
  8.         ' dans un événement click de bouton par exemple
  9.         Dim xlApp As New Excel.Application
  10.         'Si mon fichier existe je le delete
  11.         If System.IO.File.Exists("C:\toto.xls" ) = True Then
  12.             Kill("C:\toto.xls" )
  13.         End If
  14.         'ajout d'une page et sélection
  15.         Dim xsTransfert As Excel.Worksheet = xlApp.Workbooks.Add.ActiveSheet
  16.         Try
  17.             ' ici on crée la chaine de connexion
  18.             ' (on se connecte à SQL Server dans notre exemple)
  19.             With xsTransfert.QueryTables.Add(Connection:="ODBC;DRIVER=SQL Server;SERVER=NEPTUNE;APP=Microsoft® Query;DATABASE=absyss_test;Integrated Security=True", Destination:=xsTransfert.Range("A1" ))
  20.                 .CommandText = "SELECT CivDsc, CtcFstNamDsc, CtcNamDsc, CpyTrdNamDsc, CpyAddrStreet1Dsc, CpyAddrStreet2Dsc, CpyAddrZipDsc , CpyAddrExCde, CtcPhnNum, CtcFaxNum, CtcMailNum, DtyDsc as Titre1, CtcAbovDsc, CtcCellNum, CtcPrivNum, CpyAddrStreet2Dsc FROM p_cpy, p_cpyaddr, p_ctc, r_civ WHERE r_civ.CivInCde = p_ctc.CivInCde AND p_cpy.CpyInCde = p_cpyaddr.CpyInCde And p_cpyaddr.CpyAddrInCde = p_ctc.CpyAddrInCde AND p_ctc.ctcInCde >0 AND p_ctc.ctcNamDsc <> 'KIMWEB' AND p_ctc.ctcNamDsc <> 'VITO' AND p_ctc.ValidPnt <> 0 AND p_cpy.cpyStsInCde = 2 AND p_cpy.ValidPnt <> 0 AND p_cpy.CpyInCde <> 1000" ' ou requete SELECT"
  21.                 .Name = "feuil1"
  22.                 .FieldNames = True
  23.                 .RowNumbers = True
  24.                 .FillAdjacentFormulas = False
  25.                 .PreserveFormatting = True
  26.                 .RefreshOnFileOpen = False
  27.                 .BackgroundQuery = True
  28.                 .RefreshStyle = Excel.XlCellInsertionMode.xlOverwriteCells
  29.                 .SavePassword = False
  30.                 .SaveData = True
  31.                 .AdjustColumnWidth = True
  32.                 .RefreshPeriod = 0
  33.                 .PreserveColumnInfo = True
  34.                 .Refresh(BackgroundQuery:=False)
  35.             End With
  36.             ' affichage
  37.             xlApp.Visible = False
  38.             'Gestion d'erreur
  39.         Catch ex As Exception
  40.             MsgBox("Va bosser ca marche pas !" )
  41.             MessageBox.Show(ex.Message)
  42.         End Try
  43.         'Sauvegarder le resultat de la requete SQL qui est copier dans mon fichier Excel
  44.         xsTransfert.SaveAs("C:\toto.xls" )
  45.         'Pour enlever le message "voulez vous sauvegarder..."
  46.         xlApp.DisplayAlerts = True
  47.         'Quit Excel
  48.         xlApp.Quit()
  49.         'Libérer les ressources
  50.         xlApp = Nothing
  51.         xsTransfert = Nothing
  52.         'Detruire les process EXCEL.EXE
  53.         GC.Collect()
  54.         'Appel de ma 2eme fonction
  55.         Test()
  56.     End Sub
  57.     Sub Test()
  58.         Dim Path As Object
  59.         Dim ex As Object
  60.         Dim oApp As Object
  61.         Dim oCont As Outlook.ContactItem
  62.         Dim lig As Short
  63.         'ici on va créer le dossier contact s'il n'existe pas
  64.         On Error Resume Next
  65.         Dim NS As Outlook.NameSpace
  66.         Dim colCTSItems As Object
  67.         Dim oemployee As Outlook.ContactItem
  68.         NS = OutlookApplication_definst.Application.GetNamespace("MAPI" )
  69.         'On se place dans les DossierPublic/Tous les dossiers publics/Fichiers Clients KIMOCE que l'on delete s'il existe
  70.         NS.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders("Fichier Clients KIMOCE" ).Delete()
  71.         'On crée le "Fichier Client Kimoce en placant dans DossierPublic/Tous les dossiers publics
  72.         colCTSItems = NS.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders.Add("Fichier Clients KIMOCE", Outlook.OlDefaultFolders.olFolderContacts)
  73.         ' Définie le dossier comme carnet d'adresse
  74.         colCTSItems.ShowAsOutlookAB = True
  75.         Err.Clear()
  76.         On Error GoTo 0
  77.         oApp = CreateObject("Excel.Application" )
  78.         ex = oApp.Workbooks.Open("C:\toto.xls" )
  79.         lig = 2
  80.         Do Until ex.Sheets("Feuil1" ).Cells(lig, 2).Value = ""
  81.             'ici on créé un nouveau contact
  82.             oCont = colCTSItems.Items.Add(Outlook.OlItemType.olContactItem)
  83.             'Nom
  84.             oCont.FirstName = ex.Sheets("Feuil1" ).Cells(lig, 4).Value
  85.             'Prénom
  86.             oCont.LastName = ex.Sheets("Feuil1" ).Cells(lig, 3).Value
  87.             'Adresse du Bureau
  88.             oCont.BusinessAddressStreet = ex.Sheets("Feuil1" ).Cells(lig, 6).Value + Chr(13) + ex.Sheets("Feuil1" ).Cells(lig, 17).Value
  89.             'Nom Complet / Titre
  90.             oCont.Title = ex.Sheets("Feuil1" ).Cells(lig, 2).Value
  91.             'Titre
  92.             oCont.JobTitle = ex.Sheets("Feuil1" ).Cells(lig, 13).Value
  93.             'Adresse Bureau/ Ville
  94.             oCont.BusinessAddressCity = ex.Sheets("Feuil1" ).Cells(lig, 9).Value
  95.             'Adresse Bureau/ Code postal
  96.             oCont.BusinessAddressPostalCode = ex.Sheets("Feuil1" ).Cells(lig, 8).Value
  97.             'Société
  98.             oCont.CompanyName = ex.Sheets("Feuil1" ).Cells(lig, 5).Value
  99.             'Ville Bureau
  100.             'oCont.BusinessAddressCountry = ex.Sheets("Feuil1" ).Cells(lig, 15).Value
  101.             'Classer Sous / Nom du manager
  102.             oCont.ManagerName = ex.Sheets("Feuil1" ).Cells(lig, 14).Value
  103.             'Numero de telephone Bureau
  104.             oCont.BusinessTelephoneNumber = ex.Sheets("Feuil1" ).Cells(lig, 10).Value
  105.             'Numero de telephone 2  pro
  106.             'oCont.Business2TelephoneNumber = ex.Sheets("Feuil1" ).Cells(lig, 33).Value
  107.             'Numero de telephone domicile
  108.             'oCont.HomeTelephoneNumber = ex.Sheets("Feuil1" ).Cells(lig, 38).Value
  109.             'Autre Numero de telephone
  110.             'oCont.OtherTelephoneNumber = ex.Sheets("Feuil1" ).Cells(lig, 40).Value
  111.             'Numero de telephone / télécopie (bureau)
  112.             oCont.BusinessFaxNumber = ex.Sheets("Feuil1" ).Cells(lig, 11).Value
  113.             'Numero de telephone / telephone mobile
  114.             oCont.MobileTelephoneNumber = ex.Sheets("Feuil1" ).Cells(lig, 15).Value
  115.             'Numero de telephone / Domicile
  116.             oCont.HomeTelephoneNumber = ex.Sheets("Feuil1" ).Cells(lig, 16).Value
  117.             'Adresse de messagerie
  118.             oCont.Email1Address = ex.Sheets("Feuil1" ).Cells(lig, 12).Value
  119.             lig = lig + 1
  120.             oCont.Save()
  121.         Loop
  122.         'A la fin faut fermer excel
  123.         oApp.Quit()
  124.         'On libère les ressources
  125.         ex = Nothing
  126.         oApp = Nothing
  127.         'ON detruit le procces EXCEL.EXE
  128.         GC.Collect()
  129.         'On empeche le form2 de s'afficher
  130.         Me.Close()
  131.     End Sub
  132. End Class


Message édité par hazzelthorn le 17-02-2010 à 10:10:22
Reply

Marsh Posté le 17-02-2010 à 09:50:37   

Reply

Marsh Posté le 17-02-2010 à 12:01:00    

Ben pour la partie POO, c'est raté à première vue :/ Puis le choix du langage, VB, ça fait pas très sérieux. Du C# ou du java par exemple serait quand même mieux et plus sérieux (surtout pour la partie POO). Avant de commencer à coder comme un gros cochon, as-tu fais de la conception (au moins le diagramme des classes)?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-02-2010 à 13:18:26    

JAVA j'me demerde pas trop mal mais le VB m'est imposé... le codé a deja evolué a l'heure qu'il est j'utilise maintenant un fichier.INI pour lire mes variables. ca m'est aussi imposé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed