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

Excel Discussion :

Conversion de fichiers via tableau : comment supprimer les guillemets ? [XL-2007]


Sujet :

Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut Conversion de fichiers via tableau : comment supprimer les guillemets ?
    Bonjour à tous une petite question :

    J'ai une macro qui me convertit des fichiers cur en fichiers txt à partir de la 7ème ligne jusqu'à la fin et en me remplaçant le caractère espace par un caractère tabulation et ceci en stockant dans une variable tableau pour augmenter la vitesse de traitement.

    Voici donc le code.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub Vinvin1()
        'déclarations des variables
            Dim Table() As String
            'Dim fso As New FileSystemObject
            Dim fsob As Object 'Déclarations des variables
            Dim FsoRepertoire As Object, FsoFichier As Object
            Dim i As Double, j As Double
            Dim strLigne As String, str() As String
    '-----------------------------------------------------------------------------------------------------------------
        'Attribution de valeurs
            Set fsob = CreateObject("Scripting.FileSystemObject") 'Attribution de valeurs
            Set FsoRepertoire = fsob.GetFolder(ThisWorkbook.Path) 'nom du répertoire
    '-----------------------------------------------------------------------------------------------------------------
        'Importation des données .cur dans le classeur
            With Worksheets("Feuil1")
                For Each FsoFichier In FsoRepertoire.Files
                    .Range("A:IV").ClearContents 'suppression des données contenues dans les feuilles
                    i = 0
                    j = 0
                    Erase Table
                    str = Split(FsoFichier.Name, ".") 'Vérifie si le fichier a l'extension souhaité
                    If str(UBound(str)) = "cur" Then
                        Open FsoFichier.Path For Input As #1 'ouvre le fichier
                        Do While Not EOF(1) 'Boucle sur chaque ligne du fichier
                            Line Input #1, strLigne
                            j = j + 1 'Calcul du numéro de ligne du fichier en cours
                            If j >= 7 Then
                                ReDim Preserve Table(i)
                                Table(i) = Replace(strLigne, Chr(32), Chr(9), 1, -1, vbTextCompare)
                                i = i + 1 'incrémente la ligne d'écriture du tableau
                            End If
                        Loop
                        Close #1
                        For j = 1 To i Step 1
                            .Cells(j, 1) = Table(j - 1)
                        Next j
                        .SaveAs FsoFichier.Path & ".txt", xlTextWindows 'enregistrement au format txt
                        ThisWorkbook.Close False 'fermeture du classeur texte
                    End If
                Next
            End With
    '-----------------------------------------------------------------------------------------------------------------
        'Message de fin de macro et Possibilité d'impression
            MsgBox ("L'import, le traitement et la sauvegarde des données sont terminés et se sont déroulés correctement") '
    End Sub
    Les données sources sont du type :

    chiffre1 espace chiffre2

    et après macro je récupère ceci :

    "chiffre1 tabulation chiffre2"

    pourquoi j'ai des "" et comment faire pour les supprimer

    Merci beaucoup pour votre aide excellente journée
    Bonne journée,

    Cordialement,

    Vincent

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut
    Ok j'ai compris mon erreur il comprend que c'est du texte du coup il met des guillemets j'ai donc créer un tableau 2 colonnes en double (au lieu de string) et modifié les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table(i) = Replace(strLigne, Chr(32), Chr(9), 1, -1, vbTextCompare)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Table(0, i) = Split(strLigne, Chr(9))(0)
    Table(1, i) = Split(strLigne, Chr(9))(1)
    Pour ceux qui veulent le code en entier :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub Vinvin1()
        'déclarations des variables
            Dim Table() As Double
            'Dim fso As New FileSystemObject
            Dim fsob As Object 'Déclarations des variables
            Dim FsoRepertoire As Object, FsoFichier As Object
            Dim i As Double, j As Double
            Dim strLigne As String, str() As String
    '-----------------------------------------------------------------------------------------------------------------
        'Attribution de valeurs
            Set fsob = CreateObject("Scripting.FileSystemObject") 'Attribution de valeurs
            Set FsoRepertoire = fsob.GetFolder(ThisWorkbook.Path) 'nom du répertoire
    '-----------------------------------------------------------------------------------------------------------------
        'Importation des données .cur dans le classeur
            With Worksheets("Feuil1")
                For Each FsoFichier In FsoRepertoire.Files
                    .Range("A:IV").ClearContents 'suppression des données contenues dans les feuilles
                    i = 0
                    j = 0
                    Erase Table
                    str = Split(FsoFichier.Name, ".") 'Vérifie si le fichier a l'extension souhaité
                    If str(UBound(str)) = "cur" Then
                        Open FsoFichier.Path For Input As #1 'ouvre le fichier
                        Do While Not EOF(1) 'Boucle sur chaque ligne du fichier
                            Line Input #1, strLigne
                            j = j + 1 'Calcul du numéro de ligne du fichier en cours
                            If j >= 7 Then
                                ReDim Preserve Table(1, i)
                                Table(0, i) = Split(strLigne, Chr(32))(0)
                                Table(1, i) = Split(strLigne, Chr(32))(1)
                                i = i + 1 'incrémente la ligne d'écriture du tableau
                            End If
                        Loop
                        Close #1
                        For j = 1 To i Step 1
                            .Cells(j, 1) = Table(0, j - 1)
                            .Cells(j, 2) = Table(1, j - 1)
                        Next j
                        .SaveAs FsoFichier.Path & ".txt", xlTextWindows 'enregistrement au format txt
                    ElseIf str(UBound(str)) = "0" Then
                        Open FsoFichier.Path For Input As #1 'ouvre le fichier
                        Do While Not EOF(1) 'Boucle sur chaque ligne du fichier
                            Line Input #1, strLigne
                            ReDim Preserve Table(1, i)
                            Table(0, i) = Split(strLigne, Chr(9))(0)
                            Table(1, i) = Split(strLigne, Chr(9))(1)
                            i = i + 1 'incrémente la ligne d'écriture du tableau
                        Loop
                        Close #1
                        For j = 1 To i Step 1
                            .Cells(j, 1) = Table(0, j - 1)
                            .Cells(j, 2) = Table(1, j - 1)
                        Next j
                        .SaveAs FsoFichier.Path & ".txt", xlTextWindows 'enregistrement au format txt
                    End If
                Next
            End With
    '-----------------------------------------------------------------------------------------------------------------
        'Message de fin de macro et Possibilité d'impression
            MsgBox ("Conversion des fichiers terminée") '
    End Sub
    Bonne journée à tous
    Bonne journée,

    Cordialement,

    Vincent

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

Discussions similaires

  1. Comment supprimer les doublons
    Par djelloulc dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/09/2013, 14h30
  2. Comment supprimer les guillemets
    Par Invité2 dans le forum Langage
    Réponses: 9
    Dernier message: 25/02/2011, 20h32
  3. Comment supprimer les fichiers système ?
    Par Invité dans le forum Windows 2000/Me/98/95
    Réponses: 1
    Dernier message: 12/01/2008, 16h50
  4. comment supprimer les fichiers redo ?
    Par dauphin34000 dans le forum Administration
    Réponses: 5
    Dernier message: 14/06/2007, 15h47
  5. Réponses: 2
    Dernier message: 04/05/2006, 13h10

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