IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

demande de conseil : projet de manipulation de fichier excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut [VB.NET]demande de conseil : projet de manipulation de fichier excel
    Bonjour tout le monde,

    Je commence un nouveau projet consistant à manipuler un fichier excel.

    En gros j'ai un fichier excel en entrée, je dois l'ouvrir effectuer des traitements dessus et généré un nouveau fichier excel en sortie avec des onglets.

    Je voulais avoir le retour de personne ayant déjà eut ce genre de traitement à géré.

    Les problèmes rencontrer les erreurs à eviter, la méthodologie à utiliser pour gérer le problème.

    Pour l'instant je suis en train de rechercher de l'information sur le traitement de fichier excel depuis vb.net

    Merci d'avance pour vos remarques et vos retour d'expérience.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il faut ajouter en référence à ton projet la dll d'excel (microsoft excel object librairy ou un truc dans le genre, trouvable dans l'onglet COM de l'ajout de référence)

    ensuite ca permet de faire un new excelapplication, puis des tas d'instructions genre ouvrir un fichier, lire ce qu'il y a dedans, en créer un autre, le remplir, l'enregistrer et fermer excel (il est possible de rendre excel invisible pendant le traitement aussi)

    pour trouver comment manipuler le modèle objet d'excel, une chose simple c'est de faire des macros dans excel
    tu lances l'enregistrement d'une macro, tu fais ce qu'il y a à faire (genre fichier/ouvrir) puis tu arretes l'enregistrement de la macro
    la macro un fois généré est accessible dans l'éditeur vba d'excel
    le code vba (visual basic pour applications) ressemble fortement à ce qu'il faut mettre dans vb.net, juste quelques modifs à faire pour l'adapter
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    bonjour

    et merci pour ta réponse.

    Pouah je trouvais pas la référence excel. Forcément je cherchais comme un boulet dans l'onglet .net et pas dans l'onglet COM.

    et il ne le précise pas dans ce document :
    http://support.microsoft.com/kb/219151/fr-fr

    Par contre j'ai remarquer lors de l'ajout qu'il rajoute 3 références :
    - Microsoft Excel 10.0 Object Library
    - Microsoft Office 10.0 Object Library
    - Microsoft Visual Basic for Applications Extensibility 5.3

    Je voulais savoir si j'avais pas fait de boulette.

    encore merci

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    ca doit etre normal ...

    de toute facon d'avoir trop de références ne nuit pas
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Hello,
    je travail couramment avec le model excel et je te conseil de lire ces quelque lien :
    http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx
    http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx

    Ils sont très complet et intéressant...
    Une fois lut ont peut tout faire...

    Bien à toi, bonne journée.

    P.S. : Petit piège, si ton application doit tourné autant sur des postes équipé d'Excel 2007 que du 2003, utilise les DLL du 2003 (compatible avec le 2007), si tu ne le fais pas tu auras un beau plantage dans le sens inverse...

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    bonjour bonjour,

    Merci pour c deux liens,

    Je vais aller jeter un ptit coup d'oeil dessus.

    Par contre j'ai lu pas mal de chose sur "Microsoft Visual Studio 2005 Tools". Je voulais savoir si il s'agissait d'un outil indispensable, ou si on pouvait s'en passer.

    Existe-t-il une version express (gratuite) de cette outil?

    Merci pour votre aide.

    ++

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    slt

    moi je développe un application de gestion qui permet à partir d'excel j'imprime mes différents états et de faire des extraits sur l'emplacement souhaité afin de les utiliser ultérieurement.
    la sauvegarde de l'extrait peut se faire avec un nom souhaité.
    mais pour y arriver il faut tout d'abord ajouter la référence d'excel à votre projet.
    voici le code que j'utilise
    excel est manipulé en mode invisible
    j'utilise un fichier pré créer avec pour nom BDR.xls dont j'ai configuré selon l'état souhaité avec des noms de feuille précis

    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
    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
     
     
    #Region "Ouverture et fermeture du classeur"
        Public appExcel As Excel.Application
        Public Classeur As Excel.Workbook
     
        Public Feuil0, Feuil1, Feuil2, Feuil3, Feuil4, Feuil5, Feuil6, Feuil14 As Excel.Worksheet
        Public Feuil7, Feuil8, Feuil9, Feuil10, Feuil11, Feuil12, Feuil13 As Excel.Worksheet
        Public Feuil15, Feuil16, Feuil17, Feuil18, Feuil19, Feuil20, Feuil21, Feuil22, Feuil23 As Excel.Worksheet
     
        Public myIDExcel As Int16
     
        Public Sub OuvrirClasseur()
            Dim intFirstExcelIDs() As Int16 = ListID()
            Try
                appExcel = CType(CreateObject("Excel.Application"), Excel.Application)
                'Ouverture d'un fichier Excel
                Classeur = appExcel.Workbooks.Open(Filename:=My.Application.Info.DirectoryPath & "\Resources\BDR.xls", UpdateLinks:=0, ReadOnly:=False, Format:=5, Password:="diampa")
                Feuil1 = CType(Classeur.Worksheets("MotdePass"), Excel.Worksheet)
                Feuil2 = CType(Classeur.Worksheets("Bon"), Excel.Worksheet)
                Feuil3 = CType(Classeur.Worksheets("EtatBudget"), Excel.Worksheet)
                Feuil4 = CType(Classeur.Worksheets("EtatEngag"), Excel.Worksheet)
                Feuil5 = CType(Classeur.Worksheets("SituaGle"), Excel.Worksheet)
                Feuil6 = CType(Classeur.Worksheets("ImpriRea"), Excel.Worksheet)
                Feuil7 = CType(Classeur.Worksheets("FicheControle"), Excel.Worksheet)
                Feuil8 = CType(Classeur.Worksheets("ImpriEng"), Excel.Worksheet)
                Feuil9 = CType(Classeur.Worksheets("ImpriLiq"), Excel.Worksheet)
     
                Feuil10 = CType(Classeur.Worksheets("BorderauPerso"), Excel.Worksheet)
                Feuil11 = CType(Classeur.Worksheets("BorderauAutre"), Excel.Worksheet)
                Feuil12 = CType(Classeur.Worksheets("BorderauInvest"), Excel.Worksheet)
     
     
                Feuil13 = CType(Classeur.Worksheets("Borderau"), Excel.Worksheet)
                Feuil14 = CType(Classeur.Worksheets("Budget"), Excel.Worksheet)
                Feuil15 = CType(Classeur.Worksheets("Budget1"), Excel.Worksheet)
     
                Feuil16 = CType(Classeur.Worksheets("BudgetProjR"), Excel.Worksheet)
                Feuil17 = CType(Classeur.Worksheets("BudgetProjD"), Excel.Worksheet)
                Feuil18 = CType(Classeur.Worksheets("BudgetProgRecap"), Excel.Worksheet)
                Feuil19 = CType(Classeur.Worksheets("BordEmisMandat"), Excel.Worksheet)
                Feuil20 = CType(Classeur.Worksheets("GrandLivre"), Excel.Worksheet)
                Feuil21 = CType(Classeur.Worksheets("Fiches"), Excel.Worksheet)
                Feuil22 = CType(Classeur.Worksheets("BudgetR"), Excel.Worksheet)
                Feuil23 = CType(Classeur.Worksheets("BudgetD"), Excel.Worksheet)
                'BordEmisMandat  cheminPrincipal = Feuil1.Range("B77").Value.ToString
                '**** User 1
                Feuil0 = CType(Classeur.Worksheets("SituaGle1"), Excel.Worksheet)
     
                Dim intLastExcelIDs() As Int16 = ListID()
                'Différence des 2 listes et récupération de notre ID
                myIDExcel = ExtractID(intFirstExcelIDs, intLastExcelIDs)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
     
     
        End Sub
     
        Public Function ListID() As Int16()
            Dim Processes As Process() = Nothing
            Processes = Process.GetProcessesByName("EXCEL")
            ' Load ID Processes in Array
            Dim intProcesses(Processes.GetUpperBound(0)) As Int16
            Dim i As Int16
            For i = 0 To CShort(Processes.GetUpperBound(0))
                intProcesses(i) = CShort(Processes(i).Id.ToString)
            Next
            Return intProcesses
        End Function
     
        Public Function ExtractID(ByVal intFirstIDs As Int16(), ByVal intLastIDs As Int16()) As Int16
            Dim intID As Int16 = Nothing
            Dim intID_FirsList As Int16 = Nothing
            Dim intID_LastList As Int16 = Nothing
            Dim i As Int16 = Nothing
            For i = 0 To CShort(intLastIDs.GetUpperBound(0))
                intID_LastList = intLastIDs(i)
                If Array.IndexOf(intFirstIDs, intID_LastList) = -1 Then
                    intID = intID_LastList
                    Exit For
                End If
            Next
            Return intID
        End Function
     
        Public Sub FermerClasseur(ByVal intIDExcel As Int16)
            ' appExcel.SaveWorkspace()
            If intIDExcel <> 0 Then
                If Process.GetProcessById(intIDExcel).HasExited = False Then
                    Try
                        Process.GetProcessById(intIDExcel).Kill()
                        intIDExcel = 0
                    Catch ex As Exception
                        MessageBox.Show(ex.Message & ex.StackTrace, "Error while closing Excel integration.", _
                            MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try
                End If
            End If
        End Sub
    #End Region

Discussions similaires

  1. Comment manipuler plusieurs fichiers Excel
    Par Olivier0 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 16/08/2007, 08h38
  2. [c#][.net 1.1] - Manipuler des fichiers Excel en c#
    Par skystef dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/08/2007, 13h10
  3. probleme de manipulation de fichier excell
    Par obydissonn dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/03/2007, 13h21
  4. Manipuler un fichier excel avec python
    Par dipajero dans le forum Général Python
    Réponses: 4
    Dernier message: 09/02/2006, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo