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 :

Transfert de données vers Excel


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut Transfert de données vers Excel
    Bonjour!

    Je bloque sur un transfert de données depuis une variable VB.net vers un tableau Excel.

    Voila le but de la manœuvre:
    J'ai un tableau 2D assez gros sous vb et je souhaite le mettre dans un tableau excel.

    J'ai une solution (particulièrement longue) qui consiste a faire une double boucle pour parcourir mon tableau et écrire une par une les cellules dans Excel.

    Je pense qu'il y a plus simple, non...?

    A noter que je ne prefererais pas avoir besoin de me lancer dans une base de données ou me monter un dataset juste pour ce transfert (mais là, j'en demande peut etre un peu beaucoup)

    Bonne journée et merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Je suis étonné que tu aies besoin d'une double boucle...Etant que tu as un tableau 2D cela signifie que tu as le nombre de lignes de ton tableau, seul le nombre de colonnes n'est pas fini. A moins que le nombre de lignes n'augmentent, je pense que tu n'as besoin que d'une seule boucle

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Quand je parle de double boucle, c'est pour parcourir mon tableau. Ca donne un truc comme ca:

    for i=1 to nbre_lignes
    for j =1 to nbre_colonnes

    Excel.activeblabla.cells(i,j).value=Montableau(i,j)

    next
    next

    C'est tellement une usine a gaz que j'en ai honte ...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Faire la double boucle (obligatoire) et enregistrer le tout dans un CSV puis l'importer dans Excel.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    J'avais une idée au début, c'était de passer par le clipboard Windows.

    Avec les clipboard.getdata et setdata, mais j'ai des erreurs.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Je maintiens que la double n'est pas nécessaire...Tu sais que tu as deux colonnes au max donc, la seule chose indéfinie, c'est le nombre de lignes. A moins que tu ne souhaites augmenter le nombre de colonnes par la suite. Le code serait un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i to nbre_lignes
    Excel.activeblabla.cells(i,1).value=Montableau(i,1)
    Excel.activeblabla.cells(i,2).value=Montableau(i,2)
    Next
    Certes, cela peut ne pas être du "beau code" mais quand on peut éviter un traitement lourd, on le fait ^^

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Ya incompréhension. Quand je parle de tableau 2D, je veux dire deux dimensions.

    Pour mes variables, ca devrait tourner autour de 500 colonnes et 3000 lignes. Tout en sachant que mon pc n'est pas un avion de chasse.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Dans ce cas, je suis d'accord avec Kaidan. Tu ne peux pas éviter cette double boucle et le format csv est assez intéressant pour que tu n'aies pas à parcourir excel de la même façon (sachant qu'un csv, tu peux le faire sur un fichier texte ^^) Mais Wouhaa pour ton tableau !!! Cela me paraît beaucoup trop grand. Je pense que quelque soit le pc, le traitement sera quand même long.

  9. #9
    Membre habitué Avatar de Capitaine Kirk
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Points : 128
    Points
    128
    Par défaut
    Bonjour

    juste pour savoir, c'est surement très bête comme question (je m'excuse par avance )mais sur quelle version d' Excel es-tu ? parce que la 2003 ne compte que 256 colonnes lol donc c'est un transfert sur plusieurs pages si c'est bien cette version ce qui compliquerai encore le transfert?
    Capitaine Kirk.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Je travaille sous 2007. Et la réponse est 16384 colonnes et 1048576 lignes par feuille...

    Pour mon cas, voici ce que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      Dim pathfichier As String = "C:\blabla\test.csv"
     
                   For i = 1 To maxi
                   File.AppendAllText(pathfichier, Chr(13) & Chr(10))
     
                                 For j = 1 To maxi
                                 File.AppendAllText(pathfichier, Cstr(valeurs(i,j)) & ",")
                                 Next
                   Next
    A noter la belle mésentente entre Excel et Matlab (entre autres) sur le caractère séparateur du csv par défaut... Je pense que Matlab a raison en utilisant des virgules puisque le C de CSV veut dire comma (virgule en french).

    Ya ptete mieux mais ca marche et ca avance assez rapidement

    Merci a tous

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Je rebondis juste sur le coup de la virgule ^^ Je pense plus que c'est matlab qui se plante car en fonction de la culture de ton pc la "," représente la décimale donc si tu t'en sers comme séparateur cela sera mal interprété.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Merci pour l'info. Au moins je comprends d'où ça vient.

    Moi qui pensait que c'était un vaste complot destiné a me faire enrager et perdre du temps

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 12/04/2013, 16h23
  2. Transfert des données vers excel
    Par nacibo dans le forum Débuter
    Réponses: 1
    Dernier message: 10/11/2010, 09h34
  3. Transfert de données de excel vers le logiciel sage Integrale 5.0
    Par chris67 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/09/2008, 15h32
  4. transfert de donnés de excel vers Mysql
    Par mkachekh dans le forum Outils
    Réponses: 4
    Dernier message: 20/10/2006, 12h08
  5. Réponses: 4
    Dernier message: 26/07/2006, 17h46

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