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

Macros et VBA Excel Discussion :

Anomalie Fichier csv [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut Anomalie Fichier csv
    Bonsoir le forum,

    A l'aide de cette fonction, je créé un fichier csv.
    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
    Function EcrireCSV(Chemin As String, Fichier As String, Table, Nbcol As Integer) As Boolean
        EcrireCSV = False
        'Close #1
        Open Chemin & Fichier For Output As 1
        For p = LBound(Table) To UBound(Table)
            ab = Empty
            For n = 0 To Nbcol
                ab = ab & ";" & Table(p, n)
            Next n
            'suppression 1er ";"
            ab = Mid(ab, 2, Len(ab))
            'ecrire
            Print #1, ab
        Next p
        Close #1
        EcrireCSV = True
    End Function
    Lors de l'ouverture avec le BLOCNOTES tout semble correct.

    Par contre en ouvrant avec EXCEL, j'ai des lignes vides qui s'intercalent, empéchant tout travail avec les fonctions d'EXCEL (filtres par exemple).

    Quelqu'un a t-il déjà rencontré ce souci et comment a t-il résolu ce problème?

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    A tout hazard, peut on trouver dans tes données, de la variable "table", des retour à la ligne sans texte derrière?
    Dans ce cas tu aurais une ligne vide

  3. #3
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir jfontaine,

    J'y ai pensé et j'ai contrôlé.

    Ma source (fichier csv) qui alimente ma table comporte env 14000 lignes.
    Je les retrouve bien dans ma table.

    Je réalise des ajouts ce qui me porte ma table à 28 colonnes.

    J'ai testé en mettant un contrôle sur mon 1er champ qui ne doit jamais être vide et je n'ai pas se STOP de la macro.

    Si j'avais une ligne vide, ne serait elle pas visible avec le blocnotes?

    Merci pour la réponse

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir,

    pour examiner ton fichier n'as tu pas un autre éditeur de texte style Notepad++ qui te permet de voir certains caractères de contrôles masqué par notepad..

  5. #5
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir bbil,

    Si j'ai, je vais tester demain au boulot.

    A ton avis que dois-je trouver?

    Je pense que tu n'as pas posé la question innocemment?

    Merci pour la suggestion.

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    non je cherche, je pensais à un caractére LF ou CR perdu seul au milieu de ta ligne ...

  7. #7
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour le forum,

    Les modifications apportées ont corrigés l'anomalie.

    Le code fonctionne, par contre je ne sais pas ce qui a provoqué.

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bbil Voir le message
    salut, ils sont ou ces caractères LF, CR.. en fin de ligne ? ne viennent-ils pas de ton fichier csv ? comment importe tu ce fichier ?



    Citation Envoyé par Duddy Voir le message
    Bonjour le forum,

    Les modifications apportées ont c contre je ne sais pas ce qui a provoqué.

  9. #9
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour bbil,

    Le caratère CF se trouvait dans la dernière colonne du tableau.

    Sur NOTEPAD cela donnait (ce n'est pas un COLLER mais un ré-écriture)
    ...;blabla;CR
    CR
    CR
    CR
    CRLF
    Je ne m'explique pas comment is sont arrivés là, j'ai utilisé cette fonction pour lire le csv:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function LireCSV(Chemin As String, Fichier As String)
        Dim A As New Scripting.FileSystemObject
        Dim T As TextStream
       'ouverture du fichier
        Set T = Nothing
        Set T = A.OpenTextFile(Chemin & "\" & Fichier, ForReading)
        temp = T.Read(A.GetFile(Chemin & "\" & Fichier).Size)
        If Left(Fichier, 4) = "GRD_" Then
           Temp1 = Split(temp, Chr(10))
        Else: Temp1 = Split(temp, Chr(13) & Chr(10))
        End If
        LireCSV = Temp1
        Set T = Nothing
    End Function
    J'ai une condition dans la fonction car j'ai un fichier csv qui arrive en source initiale avec uniquement le caractère LF en fin de ligne.

    ensuite j'utilise ce code pour remplir mon tableau:
    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
            Temp1 = LireCSV(vChemin, "Base_X06.csv")
            'recupération des données de la base
            Erase tabx06temp
            ReDim tabx06temp(UBound(Temp1), nbColTabBase)
            For x = 0 To UBound(Temp1) - 1
                temp2 = Split(Temp1(x), ";")
                For y = LBound(temp2) To nbColTabBase
                    'pour controle de presence du chr(13) dans tableau
                    If y = nbColTabBase Then
                        de = Len(temp2(nbColTabBase))
                         If de > 0 Then
                            temp2(nbColTabBase) = Replace(temp2(nbColTabBase), Chr(13), "")
                         End If
                    End If
                    tabx06temp(x, y) = temp2(y)
                Next y
            Next x
    Je n'avais pas la recherche du CHR(13) dans le code.

    et bien sur je ré-écris avec la fonction que j'avais posté en premier.

    Merci encore

  10. #10
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    je dirais que tu te complique un peu trop la vie pour lire ton fichier texte , essai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function LireCSV(Chemin As String, Fichier As String)
        Dim A As New Scripting.FileSystemObject
        Dim T As TextStream
       'ouverture du fichier
        Set T = A.OpenTextFile(Chemin & "\" & Fichier, ForReading)
         LireCSV = T.ReadALL
        Set T = Nothing
    End Fun

  11. #11
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour bbil,

    Je te remercie et vais modifier.

    Merci pour tout, je pense que je peux mettre "résolu" maintenant.

    Bonnes vacances à tous

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

Discussions similaires

  1. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  2. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 15h18
  3. Mettre a jour BD avec fichier csv
    Par Looping94510 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 07/02/2005, 18h56
  4. Sortir un fichier csv sur base d une requete
    Par Freeman_80 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 12/01/2005, 11h21
  5. Réponses: 2
    Dernier message: 14/05/2004, 12h55

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