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 :

Datagridview et excel


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Datagridview et excel
    Bonjour,
    je suis entrain d'exporter des datagridview vers excel chacun dans une feuille, le problème c'est quand je veux enregistrer le 2ème , le précédent n'est plus là.
    voulez vous bien m'aider à garder les trois dans un seul fichier excel dans trois feuilles différentes.
    nb: j'ai ajouter un bouton enregistrer our chaque datagridview
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il serait souhaitable de mettre le code que tu utilises sur le forum, pour voir ce qui se passe et ce qui manque.

    Philippe

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    voici le code pour le 1er data:
    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
    Dim ap As Excel.Application
            Dim classeur As Excel.Workbook
            Dim feuille As Excel.Worksheet
            Dim Plage As Object
            Dim i As Int16, j As Int16
            ap = CreateObject("Excel.Application")
            classeur = ap.Workbooks.Add
            feuille = classeur.Worksheets(1)
            feuille.Cells(1, 1) = "Ville"
            feuille.Cells(1, 2) = CStr(ComboBox1.Text)
            feuille.Cells(2, 1) = "Latitude"
            feuille.Cells(2, 2) = CStr(TextBox11.Text)
            feuille.Cells(3, 1) = "Longitude"
            feuille.Cells(3, 2) = CStr(TextBox11.Text)
            feuille.Cells(2, 5) = "Altitude"
            feuille.Cells(2, 6) = CStr(TextBox33.Text)
            feuille.Cells(3, 5) = "Température ambiante"
            feuille.Cells(3, 6) = CStr(TextBox34.Text)
            feuille.Cells(2, 9) = "Humidité Relative"
            feuille.Cells(2, 10) = CStr(TextBox35.Text)
            With feuille
                Plage = .Range(.Cells(6, 1), .Cells(DataGridView1.Rows.Count + 1, DataGridView1.Columns.Count))
            End With
            For i = 0 To DataGridView1.Columns.Count - 1
                feuille.Cells(5, i + 1) = DataGridView1.Columns(i).HeaderText
                feuille.Cells(5, i + 1).Font.Bold = True
                feuille.Cells(5, i + 1).HorizontalAlignment = -4108
                feuille.Cells(5, i + 1).VerticalAlignment = -4108
            Next
            For i = 0 To DataGridView1.RowCount - 2
                For j = 0 To DataGridView1.ColumnCount - 1
                    Plage(i + 1, j + 1) = DataGridView1(j, i).Value
                Next
            Next
            classeur.SaveAs("C:\Users\SONY\Desktop\ concentrateursolaire.xls")
            MessageBox.Show("Enregistrement effectué, voir fichier concentrateursolaire dans le bureau")
            classeur.Save()
            classeur.Close()
            ap.Quit()
    et pour la 2ème:
    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
     Dim ap As Excel.Application
            Dim classeur As Excel.Workbook
            Dim feuille As Excel.Worksheet
            Dim Plage As Object
            Dim i As Int16, j As Int16
            ap = CreateObject("Excel.Application")
            classeur = ap.Workbooks.Add
            feuille = classeur.Worksheets(2)
            feuille.Cells(1, 1) = "Mois"
            feuille.Cells(1, 2) = CStr(ComboBox2.Text)
            feuille.Cells(1, 5) = "Pas"
            feuille.Cells(1, 6) = CStr(TextBox41.Text)
            With feuille
                Plage = .Range(.Cells(3, 1), .Cells(DataGridView2.Rows.Count + 1, DataGridView2.Columns.Count))
            End With
            For i = 0 To DataGridView2.Columns.Count - 1
                feuille.Cells(2, i + 1) = DataGridView2.Columns(i).HeaderText
                feuille.Cells(2, i + 1).Font.Bold = True
                feuille.Cells(2, i + 1).HorizontalAlignment = -4108
                feuille.Cells(2, i + 1).VerticalAlignment = -4108
            Next
            For i = 0 To DataGridView2.RowCount - 2
                For j = 0 To DataGridView2.ColumnCount - 1
                    Plage(i + 1, j + 1) = DataGridView2(j, i).Value
                Next
            Next
            classeur.SaveAs("C:\Users\SONY\Desktop\ concentrateursolaire.xls")
            MessageBox.Show("Enregistrement effectué, voir fichier concentrateursolaire dans le bureau")
            classeur.Save()
            classeur.Close()
            ap.Quit()
    merci

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    C'est parce cette ligne de la deuxième procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         classeur = ap.Workbooks.Add
    ajoute un second classeur. Sans avoir testé, je dirais qu'il faut juste l'enlever; ou même, de juste la mettre en commentaire.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    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
    Si je comprends bien, c'est un peu plus complexe que juste le problème du Workbooks.Add...

    Déjà, il faudrait savoir si les "sauvegardes" dans Exel de ces datagridviews se font l'une à la suite de l'autre ou bien si une action de l'utilisateur est requise à chaque fois.

    Dans la premier cas, pas besoin de récréer un objet Excel.Application à chaque fois. Utilise le même. Il te suffira juste d'ajouter une Worksheet (et pas un Workbook) ou de sélectionner la 2e (j'ignore si lors de la création du classeur ce dernier contient automatiquement 3 feuilles comme lorsqu'on ouvre Excel via l'OS).

    En fait, quand on code, il faut toujours essayer de visualiser/comprendre (profondément) ce que l'on fait.

    Ici, tu fais ceci :

    1. ouverture d'un nouveau classeur excel
    2. remplissage de la feuille1
    3. sauvegarde du classeur
    4. ouverture d'un nouveau (pas le même que le premier donc) classeur excel
    5. remplissage de la feuille2
    6. sauvegarde du classeur


    Et vu qu'en 6, tu sauvegardes sous le même nom que le premier, forcément, il est écrasé et la feuille se retrouve vide vu que tu n'y mets rien dans le second classeur.
    En regardant les choses de cette façon, il est évident qu'il y a un problème de logique auquel il faut remédier.
    Kropernic

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    bonjour,
    en fait chaque data est une fenêtre et pour chacune il y a un bouton enregistrer, donc l'enregistrement ne s'effectue que lorsque l'utilisateur le demande. et vu que les trois sont liés j'ai pensé à les enregistrer dans le même classeur mais chacune dans une feuille.
    et si vous voulez bien m'aider à résoudre un autre problème, j'aimerais bien laisser à l'utilisateur le choix de l'endroit où il veux enregistrer le fichier et son nom.
    merci

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

    Comme à mon habitude, je ne donnerai pas de code mais la logique à suivre.

    Si tes données sont dans 3 fenêtres différentes et que la sauvegarde est déclenchée par l'utilisateur, il faut lors du clic du bouton adéquat :
    1. Créer un objet Excel.Application
    2. Ouvrir ou ajouter un Workbook
    3. Choisir la feuille du classeur où on veut travaille (je pense que la première est sélectionnée par défaut)
    4. Ecrire les données
    5. Sauvegarder le fichier.


    Pour permettre à l'utilisateur de choisir le fichier et l'endroit de son stockage, deux choix s'offrent à toi selon moi.

    Soit l'utilisateur désigne à l'avance le fichier de travail et tu y ajoutes les données à sauvegarder (à toi de voir dans quelle feuille pour ne pas écraser des données éventuellement déjà présentes).
    Soit l'utilisateur désigne le fichier à la fin (juste avant l'étape 5). Mais dans ce cas, tu ne pourras pas ajouter les nouvelles données à un fichier existant.

    N.B. : Je dis à l'avance et à la fin pour faire comprendre la logique mais en fait, tu peux dans les deux cas demander à l'utilisateur le fichier qu'il veut utiliser avant même la création de l'objet Excel.Application (à l'aide d'un SaveFileDialog). Après, suivant ce que tu veux faire (ajouter des données ou créer chaque fois un nouveau fichier), soit tu ouvriras un classeur, soit tu en ajouteras un. Si tu choisis d'ajouter les données à un classeur existant, fais bien attention à vérifier si le classeur choisis par l'utilisateur existe bien. Si ce n'est pas le cas, il faudra tout de même le créer.

    Voilà, vois déjà ce que tu peux faire avec ceci, nous répondrons au question suivante au moment où elles se présenteront.
    Kropernic

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    bonjour,
    merci bien de votre aide, selon votre dernière réponse je veux savoir comment l'utilisateur peut désigner le fichier de travail à l'avance. et en ce qui les étapes à suivre, c'est ce que j'ai fait mais le problème de la feuille reste le même.

  9. #9
    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
    Montrez-nous donc ce que vous faites (le code).
    Kropernic

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    c'est déjà fait, voir #3

Discussions similaires

  1. Datagridview vers excel
    Par urbanspike dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/06/2009, 11h03
  2. Problème d'export de datagridview vers excel
    Par holdboy dans le forum C#
    Réponses: 2
    Dernier message: 15/06/2009, 22h54
  3. Réorganisation colonnes datagridview et excel
    Par salokin dans le forum C#
    Réponses: 1
    Dernier message: 10/06/2009, 15h30
  4. datagridview=>fichier excel
    Par felin86 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/04/2008, 15h17
  5. Exporter une dataGridView vers Excel
    Par drayif dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/08/2007, 18h45

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