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 :

Afficher le contenu d'une feuille Excel dans datagridview


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut Afficher le contenu d'une feuille Excel dans datagridview
    Bonjour !!

    J'utilise vb.net avec Excel

    J'ai un bouton "obtenir le nom de la colonne de feuille de calcul" avec une liste déroulante

    voici le code du bouton:
    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
     Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
            Dim Excols As New Dictionary(Of Integer, String)
     
            Form2.xlWorkSheet = CType(Form2.xlWorkBook.Sheets(Form2.ComboBox1.Text), Excel.Worksheet)
            Form2.xlWorkSheet.Activate()
     
            With Form2.xlWorkSheet
                Dim LastCol As Integer = Form2.xlWorkSheet.Cells(1, Form2.xlWorkSheet.Columns.Count).End(XlDirection.xlToLeft).Column
     
                For x As Integer = 2 To LastCol
     
                    Excols.Add(x, Form2.xlWorkSheet.Cells(1, x).value.ToString)
                Next
                ComboBox2.DataSource = New BindingSource(Excols, Nothing)
                ComboBox2.ValueMember = "Key"
                ComboBox2.DisplayMember = "Value"
     
                AddHandler ComboBox2.SelectedIndexChanged, AddressOf ComboBox2_SelectedIndexChanged
     
            End With
     
     
        End Sub
    voici le code de la liste déroulante:
    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
     
        Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Form2.xlWorkSheet = CType(Form2.xlWorkBook.Sheets(Form2.ComboBox1.Text), Excel.Worksheet)
            Form2.xlWorkSheet.Activate()
            Form2.xlApp.Visible = True
     
     
            Dim key As String = CStr(DirectCast(ComboBox2.SelectedItem, KeyValuePair(Of Integer, String)).Key)
            Dim value As String = DirectCast(ComboBox2.SelectedItem, KeyValuePair(Of Integer, String)).Value
            Dim DoesSheetExists As Boolean = False
     
            For Each xs In Form2.xlApp.Sheets
                If xs.Name = value Then
                    DoesSheetExists = True
                End If
            Next
     
            If DoesSheetExists = True Then
                MsgBox("Sheet already exists", CType(MessageBoxIcon.Error, MsgBoxStyle))
            Else
     
                With Form2.xlWorkSheet
     
                    Dim lastrow As Integer = Form2.xlWorkSheet.Cells.Rows.End(XlDirection.xlDown).Row
                    Dim colletter As String = ColumnIndexToColumnLetter(CInt(key))
     
                    exWS2 = DirectCast(Form2.xlWorkBook.Sheets.Add, Microsoft.Office.Interop.Excel.Worksheet)
                    exWS2.Name = value
     
                    Form2.xlWorkSheet.Range("A1:A" & lastrow.ToString).Copy(exWS2.Range("A1"))
     
                    Form2.xlWorkSheet.Range(colletter & "1:" & colletter & lastrow.ToString).Copy(exWS2.Range("B1"))
                    exWS2.Range("A1").Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue)
                    exWS2.Range("B1").Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue)
                    exWS2.Range("A1").Interior.ColorIndex = 8
                    exWS2.Range("B1").Interior.ColorIndex = 8
                    exWS2.Range("A2:A" & lastrow.ToString).Interior.ColorIndex = 20
                    exWS2.Range("A1:A" & lastrow.ToString).HorizontalAlignment = -4108
                    exWS2.Range("B1:B" & lastrow.ToString).HorizontalAlignment = -4108
                    exWS2.Range("A1").Font.Name = "Times New Roman"
                    exWS2.Range("B1").Font.Name = "Times New Roman"
                    exWS2.Range("B1").Font.FontStyle = "Gras"
                    exWS2.Range("A1").Font.FontStyle = "Gras"
     
     
     
     
                End With
            End If
        End Sub
        Public Function ColumnIndexToColumnLetter(ByVal colIndex As Integer) As String
            Dim div As Integer = colIndex
            Dim colLetter As String = String.Empty
            Dim modnum As Integer = 0
     
            While div > 0
                modnum = (div - 1) Mod 26
                colLetter = Chr(65 + modnum) & colLetter
                div = CInt((div - modnum) \ 26)
            End While
     
            Return colLetter
        End Function
    Ce que je veux, c' est , à chaque fois que je sélectionne une colonne, il sera ajouté à un datagridview

    voici ma colonne que je tiens à ajouter à la datagridview
    https://fbcdn-sphotos-h-a.akamaihd.n...19246286929540
    aidez moi s'il vous plait !!

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Perso, j'irais lire le classeur excel avec oledb (c'est vraiment beaucoup plus rapide) pour stocker le contenu dans une datatable.

    Ensuite, j'affiche tout dans le datagridview et je rends le colonnes invisibles. Après via ta combobox, y a plus qu'à remettre les colonnes voulues avec visible=true.
    Kropernic

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut
    bonjour;
    Citation Envoyé par Kropernic Voir le message
    Perso, j'irais lire le classeur excel avec oledb (c'est vraiment beaucoup plus rapide) pour stocker le contenu dans une datatable.

    Ensuite, j'affiche tout dans le datagridview et je rends le colonnes invisibles. Après via ta combobox, y a plus qu'à remettre les colonnes voulues avec visible=true.
    ok pouvez-vous me donner un code !!

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hors de question. Je ne donne jamais (il y a de rares exceptions) de code toute fait.

    Je vous ai donné des pistes pour lesquelles une simple recherche google suffit à vous donner des tas d'exemples. Après à vous de tester et là, si vous avez encore des problèmes (erreurs que vous ne comprenez pas), je vous aiderai encore volontiers (ainsi que d'autres ici j'en suis sûr).

    Je ne suis pas ici pour faire le travail à votre place mais pour vous aider à réfléchir et à faire le travail vous-même.
    Kropernic

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut
    salut,
    Citation Envoyé par Kropernic Voir le message
    Hors de question. Je ne donne jamais (il y a de rares exceptions) de code toute fait.

    Je vous ai donné des pistes pour lesquelles une simple recherche google suffit à vous donner des tas d'exemples. Après à vous de tester et là, si vous avez encore des problèmes (erreurs que vous ne comprenez pas), je vous aiderai encore volontiers (ainsi que d'autres ici j'en suis sûr).

    Je ne suis pas ici pour faire le travail à votre place mais pour vous aider à réfléchir et à faire le travail vous-même.
    ok , pouvez-vous m'expliquer plus sur ton idée?

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ton code montre que pour lire le fichier excel, tu fais de l'automation. Ca fonctionne mais c'est lent.

    Un fichier excel peut être utiliser presque comme une table d'une base de donnée si on l'accès à l'aide de ODBC. C'est bien plus rapide pour obtenir les infos en mémoire dans une datatable.

    Une fois que tu les as, tu en fais ce que tu veux et pourquoi, les afficher ou non dans un datagridview.
    Kropernic

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut
    Tout simplement je veux afficher dans le datagrid ou un autre outil la colonne du tableau que j'ai sélectionner dans le combobox

  8. #8
    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,

    il vous faut faire une connexion avec la chaîne tel que décrit ici : http://www.connectionstrings.com/excel/
    Exemple dans cette discussion : http://www.developpez.net/forums/d13...-excel-vb2010/

    Bonne soirée.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut Afficher une feuille excel dans un datagridview
    Salut à tous ,
    j'utilise vb.net avec excel
    en premier temps , j'ai un bouton "Ouvrir un fichier Excel" qui ouvre n'import quel fichier excel
    et voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            OpenFileDialog1.ShowDialog()
     
            TextBox1.Text = OpenFileDialog1.FileName
     
            ch = OpenFileDialog1.FileName
     
            Process.Start("Excel", TextBox1.Text)
     
            ComboBox1.Items.Clear()
        End Sub
    en suite , j'ai un autre bouton "Choisir le nom de la feuille" qui me donne les noms des feuilles du fichier excel que j'ai choisie dans un combobox
    voici le code :
    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
     
        Public Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            Dim x1 As String
     
            xlApp.Visible = False
            xlWorkBook = xlApp.Workbooks.Open(ch)
            xlWorkSheet = CType(xlWorkBook.Sheets(1), Worksheet)
     
            If ComboBox1.Items.Count = Nothing Then
                With xlWorkSheet
     
     
                    For Each Me.xlWorkSheet In xlWorkBook.Worksheets
                        x1 = xlWorkSheet.Name
     
                        ComboBox1.Items.Add(x1)
     
                    Next xlWorkSheet
     
                End With
            Else
                MsgBox("Déja Pleine!", CType(MessageBoxIcon.Error, MsgBoxStyle))
     
     
            End If
        End Sub
    Apres j'ai un combobox qui contient les noms des feuilles du fichier excel
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Public Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            With xlWorkSheet
     
                xlWorkSheet = CType(xlWorkBook.Sheets(ComboBox1.Text), Excel.Worksheet)
                xlWorkSheet.Activate()
                xlApp.Visible = True
     
            End With
        End Sub
    j'ai un petit problème , je veux afficher la feuille excel que j'ai choisie dans un datagridview
    pouvez-vous modifier mon code du combobox pour que je peux afficher ma feuille dans un datagridview
    voici ma form :https://fbcdn-sphotos-h-a.akamaihd.n...3529fbe5bdd229
    aidez-moi s'il vous plait!!

  10. #10
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    C'est une blague ?

    Le plupart des gens de la communauté du forum vont bien remarquer que tu as déjà créé un sujet...
    Dans lequel on t'explique que PERSONNE ne fera ton code à ta place.

    Alors de recréer un sujet... C'est vraiment nous prendre pour des idiots.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    C'est une blague ?
    Non Non , Pourquoi ??????

  12. #12
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    (J'ai édité mon premier post)
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    C'est une blague ?

    Le plupart des gens de la communauté du forum vont bien remarquer que tu as déjà créé un sujet...
    Dans lequel on t'explique que PERSONNE ne fera ton code à ta place.

    Alors de recréer un sujet... C'est vraiment nous prendre pour des idiots.
    Mon code est faux ou quoi????
    je suis très fatigué mais je ne viens pas à résoudre mon problème

  14. #14
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Et bien reposez vous.

    Reprenez le post déjà créer, si des points ne sont pas claire vous pouvez poser des questions.

    Quand vous aurez essayer ce qu'on vous a conseiller, que vous aurez fait du code, et que là, il y a quelque chose qui ne va pas, on sera ravi de t'aider.

    Mais sur cette question :

    pouvez-vous modifier mon code du combobox pour que je peux afficher ma feuille dans un datagridview
    Il y a très peu de chance que quelqu'un y réponde.
    Libre à vous de commencez dès maintenant a travailler de votre côté, ou à juste attendre un miracle.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 3
    Points
    3
    Par défaut
    ok merci bien

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/07/2015, 15h14
  2. Réponses: 4
    Dernier message: 05/11/2014, 11h12
  3. Afficher une feuille excel dans un OLE
    Par mickdu29 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 23/02/2011, 01h03
  4. Afficher une feuille Excel dans une page .aspx
    Par AJemni dans le forum ASP.NET
    Réponses: 5
    Dernier message: 19/10/2009, 11h28
  5. Réponses: 4
    Dernier message: 11/07/2007, 18h40

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