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 :

Excel - écrire un tableau 2D sur différentes colonnes


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 33
    Points : 19
    Points
    19
    Par défaut Excel - écrire un tableau 2D sur différentes colonnes
    Bonjour,

    Je suis actuellement sur l'enregistrement de données sous Excel.
    Les données reçues sont dans un tableau 2D dans lequel les colonnes sont de taille fixe (12 colonnes )et le nombre de lignes varie.

    Actuellement j'arrive à recopier la totalité de ce tableau dans la feuille Excel mais uniquement s'il y a moins de 65536 lignes (la feuille Excel ne peut pas excéder la même quantité). A partir de là j'aimerais continuer à écrire les données, de nouveau à partir du haut de la feuille mais en ne commençant plus à la colonne 0 mais à la colonne12 et ainsi de suite toutes les 65536 lignes.

    Voici ma ligne de code pour recopier le tableau :
    feuilleExcel.Cells.Rows().Value = Tableau2D

    J'ai essayé de faire du cellule par cellule (avec un tableau de 1000 points )et le temps mis à traiter la totalité du tableau est énorme (45sec) contrairement aux 5sec pour la recopie complète du tableau.

    Si quelqu'un a une idée je suis preneur !

    Merci

    J

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Supposons que tu écrives les données dans la cellule (ligne, colonne)
    Transformons ça de façon à introduire un décalage sur la colonne : tu écris dans la cellule (ligne, colonne_départ + colonne)
    Au départ, colonne_départ vaut 0. Dans ta boucle, il suffit d'incrémenter de 12 le numéro de la colonne de départ toutes les 65536 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (ligne Mod 65536) = 0 Then
        colonne_départ += 12
    End If

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Comme je l'ai dit au départ, si je fait du remplissage cellule par cellule, ça met énormément trop de temps donc je ne dois pas utiliser cette méthode.

    Donc ton principe convient mais mon souci c'est que je ne sais pas comment ajouter le tableau (d'un coup) à partir de la colonne x+12.
    Lorsque j'utilise la ligne de code :
    feuilleExcel.Cells.Rows().Value = Tableau2D
    Le tableau complet est recopié mais sur les colonnes de 1 à 12.

    Merci

    J

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    A ce moment-là, tu peux transformer ton tableau avant de le copier dans la feuille, de façon à n'avoir que 65536 lignes et ((nb lignes / 65536) x 12) colonnes.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Ha, bonjour Skalp !

    J'ai eu l'occasion de lire tes tuto' pour Excel en C, ça aide !

    L'idée de transformer le tableau avant quoi que ce soit me parait encore plus astucieux que tout le reste, ça ira encore plus vite et plus simple à gérer !

    Ça me plait, je m'y colle de suite et vous tiens au courant.

    Merci à vous deux

    J

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Ça fonctionne nickel,

    Merci pour vos aides,

    J

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

Discussions similaires

  1. écrire un long texte sur quatre colonnes
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 11/07/2009, 21h50
  2. Réponses: 4
    Dernier message: 16/02/2009, 13h42
  3. Réponses: 7
    Dernier message: 17/07/2007, 15h29
  4. [VBA-EXCEL]bloquer la saisie utilisateur sur une colonne
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/06/2006, 14h37
  5. Calcul sur différentes colonnes
    Par climz dans le forum Access
    Réponses: 4
    Dernier message: 22/05/2006, 19h00

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