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 :

Conversion multiple de fichiers


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 10
    Par défaut Conversion multiple de fichiers
    Bonjour à tous,

    Voilà mon soucis:

    J'ai réussi à coder une application capable d'ouvrir un fichier Excel, récupérer 2 colonnes, puis créer et écrire ces 2 colonnes séparées d'un ";" dans un fichier texte. J'aimerai maintenant, de la même manière, pouvoir faire tourner ce programme pour TOUS les fichiers d'un même dossier. Merci d'avance pour l'aide précieuse que vous pourriez m'apporter sur le sujet.

    Voici mon code actuel:

    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
    Imports System.IO
    Imports Microsoft.Office.Interop
     
    Public Class Form1
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BT_CONVERSION.Click
     
            Dim xlApp As New Excel.Application
            Dim xlWb As Excel.Workbook
            Dim xlSh As Excel.Worksheet
            Dim colonne_outil(Reglages.TB_OUTIL2.Text) As String
            Dim colonne_cotation(Reglages.TB_OUTIL2.Text) As String
            xlWb = xlApp.Workbooks.Open(Reglages.TB_EXCEL.Text)
            xlSh = xlWb.Worksheets(1)
            Dim sw As New StreamWriter(Reglages.TB_TEXTE.Text)
            For i As Integer = 0 To colonne_outil.Length - 1
                colonne_outil(i) = xlSh.Cells(i + Reglages.TB_DEBUT.Text, Reglages.TB_OUTIL.Text).Value 'Format du type (Ligne, Colonne)
                colonne_cotation(i) = xlSh.Cells(i + Reglages.TB_DEBUT.Text, Reglages.TB_COTATION.Text).Value
                If Not IsNumeric(colonne_cotation(i)) Then i = i + 1
                If colonne_outil(i) Is Nothing Or Not IsNumeric(colonne_outil(i)) Then i = i + 1 Else sw.WriteLine(colonne_outil(i) & ";" & colonne_cotation(i))
            Next
            sw.Close()
     
        End Sub
     
        Private Sub BT_REGLAGES_Click(sender As Object, e As EventArgs) Handles BT_REGLAGES.Click
            Reglages.Show()
        End Sub
     
    End Class

  2. #2
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut,
    Pour avoir une fenêtre de sélection d'un dossier : FolderBrowserDialog
    Pour obtenir une liste de fichiers dans un dossier : DirectoryInfo.GetFiles

    Bon code...

  3. #3
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Il te faudra également utiliser une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For each .... Next
    Et surtout ne pas oublier à chaque tour de boucle :

    --> de fermer ton classeur :

    --> de quitter ton instance :

    A+

  4. #4
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 10
    Par défaut
    Salut,
    Merci beaucoup pour vos réponses, j'arrive maintenant à convertir plusieurs fichiers dans un dossier ! Cependant, nouveau problème que je n'arrive pas à résoudre: j'ai 3 fichiers dans mon dossier, le programme convertit bien les 2 premiers et s'arrête au milieu du 3ème avec cette erreur : " "System.IndexOutOfRangeException*: 'L'index se trouve en dehors des limites du tableau.' ". Auriez-vous une piste ?

    EDIT: Quand je passe le 3eme fichier seul, la conversion marche sans problème..

    Voici le programme : (ligne où ça bloque spécifiée en commentaire)

    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
    Imports System.IO
    Imports Microsoft.Office.Interop
     
    Public Class Form1
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BT_CONVERSION.Click
     
            Dim Excel_App As New Excel.Application
            Dim Excel_Wb As Excel.Workbook 
            Dim Excel_Ws As Excel.Worksheet
            Dim colonne_outil(Reglages.TB_OUTIL2.Text) As String 
            Dim colonne_cotation(Reglages.TB_OUTIL2.Text) As String 
            Dim Fichiers As String() = Directory.GetFiles(Reglages.TB_DOSSIER.Text) 
            Dim Excel As String 
            For Each Excel In Fichiers 
                Excel_Wb = Excel_App.Workbooks.Open(Excel) 
                Excel_Ws = Excel_Wb.Worksheets(1) 
                Dim Fichier_txt As New StreamWriter(Excel & ".txt") 
                For i As Integer = 0 To colonne_outil.Length - 1
                    colonne_outil(i) = Excel_Ws.Cells(i + Reglages.TB_DEBUT.Text, Reglages.TB_OUTIL.Text).Value
                    colonne_cotation(i) = Excel_Ws.Cells(i + Reglages.TB_DEBUT.Text, Reglages.TB_COTATION.Text).Value 
                    If Not IsNumeric(colonne_cotation(i)) Then i = i + 1 
                    If colonne_outil(i) Is Nothing Or Not IsNumeric(colonne_outil(i)) Then i = i + 1 Else Fichier_txt.WriteLine(colonne_outil(i) & ";" & colonne_cotation(i)) 'Bloque sur cette ligne au niveau de colonne.outil is Noting Or Not IsNumeric
                Next
                Fichier_txt.Close() 
                Excel_Wb.Close()
                Excel_App.Quit()
     
            Next
     
        End Sub
     
        Private Sub BT_REGLAGES_Click(sender As Object, e As EventArgs) Handles BT_REGLAGES.Click
            Reglages.Show() 'Ouvrir la fenêtre réglages
        End Sub
    End Class

  5. #5
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Citation Envoyé par kravken Voir le message
    Cependant, nouveau problème que je n'arrive pas à résoudre: j'ai 3 fichiers dans mon dossier, le programme convertit bien les 2 premiers et s'arrête au milieu du 3ème avec cette erreur : " "System.IndexOutOfRangeException*: 'L'index se trouve en dehors des limites du tableau.' ". Auriez-vous une piste ?
    Cela veut dire que ta variable i dépasse la limite colonne_outil.Length - 1

    Je ne sais pas pourquoi tu boucles sur le nombre de caractère d’une chaine de texte. Je soupçonne que lorsque que tu fais If Not IsNumeric(colonne_cotation(i)) Then i = i + 1. Tu dépasses la limite. Pourquoi tu boucles sur chaine de texte et tu mets une condition sur une autre qui modifie le numérateur de la boucle ?

  6. #6
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 10
    Par défaut
    Les colonnes outil et colonnes cotations peuvent être composées de texte que je ne dois pas extraire dans mon fichier .txt, donc je les déclare en string.

    Ce que je voudrais faire est de balayer toutes les valeurs de colonne outil (dans mon fichier excel) et les écrire dans mon fichier texte, et aussi récupérer les valeurs de colonnes cotation pour, de même, les écrire sur le fichier texte. Cependant, lorsque les cellules sont composées de texte ou d'un blanc (et non d'une valeur numérique), je passe à la ligne de mon tableau excel d'après.

    Je pense que ma manière de faire n'est pas la mieux, tu n'aurais pas des conseils ? Peut être qu'un boucle "tant que i n'est pas arrivé la fin du tableau" serait plus appropriée ? (même si je ne sais pas comment l'écrire en vb, je suppose que c'est possible)

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2006, 11h58
  2. Conversion d'un fichier texte unix -> dos
    Par lejert dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/11/2005, 15h59
  3. Conversion d un fichier php en ini
    Par gilles641 dans le forum Langage
    Réponses: 1
    Dernier message: 09/08/2005, 16h54
  4. [JAR]conversion projet en fichier JAR
    Par alain34270 dans le forum Général Java
    Réponses: 3
    Dernier message: 08/06/2005, 15h29
  5. Conversion d'un fichier dos vers windows ?
    Par elitost dans le forum Windows
    Réponses: 4
    Dernier message: 10/02/2005, 17h42

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