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

Windows Forms Discussion :

ecrire dans excel


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut ecrire dans excel
    Bonjour, j'utilise VB 2008 et je cherche a écrire dans un fichier excel une feuille précise et cellule précise aussi. voila le code que j'ai réalisé mais sans succès
    Merci par avance
    Philippe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim excel As New Excel.Application
            Dim workbook As Excel.Workbook
            Dim worksheet As Excel.Worksheet
     
            excel.Visible = True 'la fenêtre excel est visible
            workbook = excel.Workbooks.Add("C:\Users\Philippe\FCphilguio.xls") 'on ouvre un classeur dans excel
     
     
            ("Feuil1").range("A8") = 1
     
        End Sub

  2. #2
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonsoir,

    voici la page de msdn qui traite du sujet, pour aller plus loin je te conseil de lire celle-ci...

    Bien à toi

  3. #3
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    merci, par contre je ne vois pas comment faire, dur dur
    @+
    Philippe

  4. #4
    Membre à l'essai
    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
    Points : 18
    Points
    18
    Par défaut
    Voici comment faire:
    1- Ajouter au projet la référence Excel en procédant ainsi:
    Cliquer Bouton droit sur le nom de votre projet dans l'explorateur de solution
    Cliquer ensuite sur l'onglet "COM" de la fenêtre qui s'ouvre puis selectionner Microsoft Excel 11.0 Object Library ou Microsoft Excel 12.0 Object Library et sur OK pour ajouter la référence

    2- Dans l'éditeur de code entrer ceci

    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
     
     
    #Region "Ouverture et fermeture du classeur"
       'Déclaration-----------------------------------
        Private appExcel As Excel.Application
        Private Classeur As Excel.Workbook
     
        Private Fl1, Fl2, Fl3 As Excel.Worksheet
        Private myIDExcel As Int16
        ----------------------------------------------------
        Public Sub OuvrirClasseur() 'Ouverture du classeur
        '
            Dim intFirstExcelIDs() As Int16 = ListID()
            Try
                appExcel = CType(CreateObject("Excel.Application"), Excel.Application)
                'Ouverture d'un fichier Excel
                Classeur = appExcel.Workbooks.Open(Filename:="C:\Users\Philippe\FCphilguio.xls", UpdateLinks:=0, ReadOnly:=False, Format:=5, Password:="Mot de passe")
                Fl1 = CType(Classeur.Worksheets("Feuil1"), Excel.Worksheet)
                Fl2 = CType(Classeur.Worksheets("Feuil2"), Excel.Worksheet)
                Fl3 = CType(Classeur.Worksheets("Feuil3"), 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) 'fermeture du fichier ouvert
            ' 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
    'Pour utiliser votre fichier excel

    'dans votre code inserrer ainsi:
    '--- Exemple d'enregistrement dans la feuil1 du classeur ---------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      Private Sub btnEnreg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnreg.Click
         Try
           OuvriClasseur () 'on ouvre le classeur
           Fl1.Range("A1").Value= Me.texbox1.Text
           Classeur.Save  'pour enregistrer
         Catch ex As Exception
         Finally
            FermerClasseur(myIDExcel) 'Ferme le classeur ouvert
         End Try
     
       End Sub

  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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    +1 pour diampa
    car l'application Excel à beaucoup de mal à ce fermer seul, ce qui fait que lors de test il m'est déjà arrivé de me retrouver avec plus de 20 processus Excel.
    Avec la méthode que diampa te montre ca le ferme à coups sûr. (Cette méthode avait été partagée sur ce fil de discution)

  6. #6
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    Merci beaucoup, ça marche. Par contre je bloc sur quelque chose de tout C....

    A la place de textbox1, je cherche à récupérer la valeur de ce qu'il y a dans une listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Try
           OuvriClasseur () 'on ouvre le classeur
           Fl1.Range("A1").Value= Me.texbox1.Text ' j'ai essayer Me.listbox.valuemember
           Classeur.Save  'pour enregistrer
         Catch ex As Exception
    merci par avance

  7. #7
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    Rebonjour
    Bon j'ai trouvé ce qui suit mais comment faire pour différencier les lignes de la liste box, car ici je récupère une chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim element As Object
            Dim MaListe As String
            MaListe = ""
            For Each element In ListBox2.Items
                MaListe = MaListe & element
            Next element
    Merci @+
    Philippe

  8. #8
    Membre à l'essai
    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
    Points : 18
    Points
    18
    Par défaut
    Pour différencier les lignes de la liste box il te suffit de faire une boucle de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Dim MaListe As String
            MaListe = ""
            For i As Integer = 0 To Me.ListBox2.Items.Count - 1 ' 0 correspond au premier élément de ta liste box
                MaListe = MaListe  & Me.ListBox2.Items(i)
            Next

  9. #9
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Hello,
    désoler de répondre si tard mais vive les vacances

    C'était juste pour dire que le code qua donné philguio :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim element As Object
            Dim MaListe As String
            MaListe = ""
            For Each element In ListBox2.Items
                MaListe = MaListe & element
            Next element
    et celui de diampa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim MaListe As String
            MaListe = ""
            For i As Integer = 0 To Me.ListBox2.Items.Count - 1 ' 0 correspond au premier élément de ta liste box
                MaListe = MaListe  & Me.ListBox2.Items(i)
            Next

    font exactement la même chose !!!


    Concernant ton problème (que j'espère que tu as résolu) :
    A la place de textbox1, je cherche à récupérer la valeur de ce qu'il y a dans une listbox
    Si tu vas voir la page msdn sur listbox,
    il t'explique en profondeur l'utilisation d'une listbox, et il te donne ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ' Display the second selected item in the ListBox to the console.
        System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems(0).ToString())
    si tu te pose une question concernant un composant, un petit tour sur msdn (ou via recherche google : "msdn listbox") te permette d'approfondir celui-ci de manière optimal, et comble de tout, c'est en français

    Bonne soirée et bon développement.

Discussions similaires

  1. Ecrire dans Excel sans MS Excel sur le poste
    Par olivv dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 13/08/2009, 11h02
  2. Ecrire dans Excel via DDE quand plusieurs fichiers Excel ouverts
    Par Lolly dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 09/07/2009, 17h26
  3. ecrire dans excel
    Par jeanlucsl dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 03/12/2007, 14h07
  4. [VB.NET] Ecrire dans EXCEL 2002 depuis VB.net
    Par vijeo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/06/2006, 13h09

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