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 :

Copier/Coller depuis un datagrid view vers Excel : Traitement long


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut Copier/Coller depuis un datagrid view vers Excel : Traitement long
    Bonjour à tous,

    J'ai fait un programme qui permet d'exporter vers excel depuis un datagridview. Pour un petit jeu de ligne je n'ai aucun problème mais lorsque j'ai environ 50000 lignes le traitement n'aboutit pas.

    Voila le code que j'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Me.DataGridView1.SelectAll()
     
    ' Add the selection to the clipboard.
                Clipboard.SetDataObject(Me.DataGridView1.GetClipboardContent())
                wsExcel.PasteSpecial(NoHTMLFormatting:=True)
    La partie Clipboard.SetDataObject(Me.DataGridView1.GetClipboardContent()) met déjà un peu de temps mais ça passe encore mais par contre le PasteSpecial lui ne se fait pas.

    Comment pourrais-je augmenter la rapidité de traitement ?

    Merci par avance pour vos retour.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 594
    Points : 1 089
    Points
    1 089
    Par défaut
    Bonjour,

    Ne serait-il pas plus rapide de faire un pilotage d'Excel pour remplir celui-ci ?

    ONTAYG

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    Bonjour ONTAYG,

    Et bien en principe c'est ce que j'aurai fait, cela dit ce datagridview est remplit de différente manière selon les paramètres. De plus si tu fait allusion à une boucle qui balaye le datagridview pour alimenter chaque cellule d'excel, ceci est beaucoup trop long.

    Le copier coller du gridview était pour moi la solution la plus rapide, donc si tu as une autre astuce...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 594
    Points : 1 089
    Points
    1 089
    Par défaut
    Re,

    Désolé, je n'avais pas d'autres solutions, mais vu que tu as testé en pilotant Excel, je ne sais pas quoi dire d'autre. Désolé

  5. #5
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 704
    Points : 1 023
    Points
    1 023
    Par défaut
    Bonjour,

    Le copier-coller fonctionne "pas trop mal" (quid des données numériques, dates ?) sur de petites quantités de données, mais il est limité par la mémoire et va forcément quand on ajoute la consommation d'Excel, rapidement atteindre la saturation. Ce qui impliquera une utilisation du fichier d'échange, qui même sur un SSD va nettement ralentir le traitement.
    La bonne solution, c'est d'utiliser des outils prévus pour.
    Il y a l'OpenXML de Microsoft, ou bien OleDB (on lit et écrit dans Excel comme avec une BD).
    Personnellement j'utilise cette dernière option, pour des imports / exports. C'est rapide, et relativement simple à mettre en œuvre.

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    Je comprends bien, mais le transfert depuis un datagridview peut-il se faire rapidement via les méthodes que tu décris ?
    Je pose la question car sauf erreur de ma part la récupération des informations depuis le datagridview ne pourra se faire que cellule par cellule ligne par ligne. (a moins qu'il y ait une autre astuce) et la sur un jeu de données volumineux c'est plutôt lent. j'avais une fois tenté de cocher environ 10000 lignes via une boucle dans un datagridview et c’était très long.

    J'ai opté pour le copier coller car le selectAll était plutôt efficace.

    je comprend bien le fonctionnement via oledb mais j'ai en revanche un peu plus de mal a voir comment le mettre en place...
    un coup de pouce serait bienvenue...

    Pour info j'appelle une procédure stockée dans sql server et je stocke le résultat dans un datagridview...

    merci par avance

Discussions similaires

  1. [XL-2010] Copier coller de dates de Word vers Excel (pro 2010)
    Par berjus dans le forum Excel
    Réponses: 2
    Dernier message: 11/02/2019, 08h31
  2. [XL-2013] Copier/coller d'un doc Word vers Excel
    Par Naaby dans le forum Excel
    Réponses: 4
    Dernier message: 02/05/2015, 09h07
  3. [PR-2010] VBA Copier / coller depuis Excel
    Par jouclar dans le forum VBA Project
    Réponses: 1
    Dernier message: 17/04/2013, 16h05
  4. Copier/coller depuis un StyledText vers Word
    Par p1xl_01 dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 08/01/2013, 18h06
  5. Réponses: 1
    Dernier message: 15/06/2009, 18h46

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