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 :

Besoin d'aide pour un algo en vb.net


Sujet :

VB.NET

  1. #1
    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 Besoin d'aide pour un algo en vb.net
    Bonjour,

    Je suis en train de bosser sur un projet relativement simple mais j'ai un gros doute sur la voie à suivre pour répondre au problème.

    Je dois générer deux fichiers excel à partir d'un. Le programme doit donc ouvrir le fichier d'origine et copier aléatoirement une ligne dans l'un des deux fichiers. Les lignes du fichier d'origine ne peuvent être copiées qu'une seule fois.

    C'est le côté aléatoire qui me pose problème. J'ai envisagé plusieurs solutions, il y en a deux qui ressortent.

    1 - Je récupère une ligne, je la copie dans un des fichiers et j'enregistre le numéro de la ligne dans une liste. Pour la ligne suivante, je vérifie que son numéro n'a pas été enregistrée. Cela ne me semble pas être une très bonne solution du fait que si je retombe sur un même numéro je dois recommencer à choisir un numéro.

    2 - Je récupère le dernier numéro de la dernière ligne du fichier. Je crée une liste (à l'aide d'un while) où j'enregistre tous les numéros 1 par 1....(c'est le côté laborieux de cette version...) puis je choisis aléatoirement un numéro dans cette liste tout en le retirant par la suite.

    Pensez-vous que je pars sur de mauvaises pistes ? Pour la solution 2, si le nombre de lignes est assez conséquents, le programme sera probablement très lent ?

    Si vous avez d'autres solutions, je prends

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    travailler sur excel c'est jamais super rapide de toute facon ^^
    peut etre qu'avec une application vsto ca sera plus rapide qu'avec un exe

    sinon le principe oui c'est de te faire une liste des numéro en lisant toutes les valeurs pour la colonne en question comme tu le dis dans ta solution 2

    si ton fichier excel n'a que quelques dizaines de lignes ca devrait etre relativemnt rapide quand même
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    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
    Le hic, c'est que le fichier actuel a déjà 1250 lignes T_T Et cela va probablement augmenter par la suite...J'avais penser copier aussi l'ensemble dans un fichier texte, en générer 2 et faire la copie dans les fichiers excel...

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dans le peu de manipulation de fichier excel que j'ai eut à faire, j'ai constaté qu'en lisant des cellvalue est long, et qu'en faisant un copier coller est beaucoup plus rapide (énormément)
    essaye de travailler cette piste, tu fais une sélection dans excel par code de la colonne à utiliser, tu fais copier (toujours par code) puis tu récupère le paste (dans je ne sais pas quoi d'aileurs, voir à quoi ressemble ce qu'il y a dans le clipboard)
    moi c'était dans l'autre sens, avec un stringbuilder (plus rapide qu'un string pour concaténer) je mettais valeurcell1 & vbtab & valeurcell2 & vbcrlf etc...
    et le paste sur excel marchait bien, donc si dans l'autre sens on récupère bien ce format là (au moins via le gettext je pense) il suffira de faire du double split

    system.windows.forms.clipboard
    system.text.stringbuilder
    tblstring() = split(monstring, caractère_ou_chaine_séparateur)

    par contre la méthode du copier coller vers excel ne permet pas de faire de mise en forme (police, couleur ...)

    autre astuce, pour connaitre le code "vba" à utiliser il suffit d'enregistrer une macro dans excel puis d'en récupérer le code pour le mettre dans vb.net, et il y a juste à l'adapter
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    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
    C'est ce que je comptais utiliser pour la copie. Les stringBuilder je m'en sers déjà pour l'autre programme avec lequel je vous saoule régulièrement sur le forum ^^ Cela m'a permis de diviser par 3, voir par 4, le temps d'exécution et aussi le nombre de requêtes SQL utilisées a été divisé par 10 ^^

  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
    Citation Envoyé par Pol63 Voir le message
    autre astuce, pour connaitre le code "vba" à utiliser il suffit d'enregistrer une macro dans excel puis d'en récupérer le code pour le mettre dans vb.net, et il y a juste à l'adapter
    Je n'avais pas vu, je m'en sers tout le temps ^^

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

Discussions similaires

  1. Besoin d'aide pour transcription C# vers VB.NET
    Par Stephane_br dans le forum C#
    Réponses: 5
    Dernier message: 09/02/2012, 15h51
  2. Besoin d'aide pour un Algo
    Par Spinoza23 dans le forum Mathématiques
    Réponses: 10
    Dernier message: 16/02/2007, 15h35
  3. Besoin d'aide pour implementer un algo
    Par mobscene dans le forum Langage
    Réponses: 7
    Dernier message: 30/11/2006, 16h17
  4. Besoin d'aide pour algo
    Par vodevil dans le forum Langage
    Réponses: 8
    Dernier message: 08/03/2006, 13h45
  5. besoin d'aide pour des algos
    Par mathieu77 dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 08/11/2005, 18h33

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