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 :

Liste des fichiers CSV dans une feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Par défaut Liste des fichiers CSV dans une feuille
    Alors, voici ce que j'aimerais faire

    sms me retourne un inventaire de logiciel pour un poste donné

    le fichier retourné par sms est sous forme NomPoste.csv

    dans le classeur excel feuil1 je liste les nom de postes

    P100236
    P100237
    P100265

    quand je clique sur un bouton la macro excel récupere dans un repertoire precis les fichiers.csv qui sont liste dans la feuil P100236,P100237

    merci a l'avance de votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Pour récupérer les noms des fichiers contenus dans un répertoire il faut utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_fichier= Dir (....)
    .
    Pour les détails il te faut aller sur l'aide en ligne.
    Tu peux même préciser à cette fonction que tu n'est intéressé que par les fichiers de type .csv

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Par défaut comment renomer la sheet avec le nom du fichier .csv
    je cherche toujours

    j'arrive a ouvrir un fichier avec le code suivant

    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
    Sub OuvrirFichier()
     
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;C:\RapportsSMS\sog6300.csv", Destination:=Range("A1"))
            .Name = "sog6300"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        Columns("B:C").Select
        Selection.ClearContents
        Rows("1:1").Select
        Selection.ClearContents
        Selection.Delete Shift:=xlUp
        Range("A1").Select
    End Sub
    mais j'aimerais qu'il ouvre TOUT les fichier.csv dans le repertoire en renommant le nom de la feuille avec le nom du fichier .csv

    c'est fou le temps qu'on perd a cherché, faut passer par la pour apprendre..

    Merci a l'avance

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le code pour lister les fichiers d'un répertoire, c'est comme le nom des fous, il est écrit partout. Une recherche sur le forum te le donnera en x exemplaires, que ce soit avec dir ou filesearch.
    Il te restera à ouvrir le csv. Le code différant selon la version, tu as ça ici.
    Tiens, pendant que j'y étais, pour lister les fichiers d'un répertoire.
    Tu remplaces cette ligne
    If NomFich = "" Or Right(NomFich, 4) <> ".xls" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If NomFich = "" Or Right(NomFich, 4) <> ".csv" Then
    et tu remplaces le code d'ouverture par celui correspondant pour les csv, trouvé ici.
    Bonne prog'

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Par défaut trop simple pour toi
    je fais vraiment des efforts mais .... suite a tes indications j'arrive avec un trucs comme sa

    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
    Sub Ouvrir(Chemin As String, FL1 As Workbook)
    Dim NomFich As String
        NomFich = Dir(Chemin & "\")
        If NomFich = "" Or Right(NomFich, 4) <> ".csv" Then
             MsgBox "Aucun fichier trouvé dans " & Chemin & "."
             Exit Sub
        End If
        Do While NomFich <> ""
            Application.EnableEvents = False
                Workbooks.Open Chemin & "\" & NomFich
                DoEvents
            Application.EnableEvents = True
            NomFich = ActiveWorkbook.Name
            Copie NomFich, FL1
            NomFich = Dir
        Loop
    End Sub
     
     
    Sub Appel()
    Dim FL1 As Workbook, Chemin As String
        Application.ScreenUpdating = False
            Chemin = "C:\Users\Eric\Desktop\test"
            Set FL1 = ThisWorkbook
            Ouvrir Chemin, FL1
        Application.ScreenUpdating = True
        MsgBox "Pour des raisons de protection ou autres, n'ont pu être copiées " & vbCrLf & msg
    End Sub
    evidament sa marche pas :-( et je ne comprend pas pourquoi je doit faire deux sub (ouvrir et Appel) je ne peux pas tout mettre dans le meme ?

    Meric

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Effectivement, ton code de copie ne veut rien dire. Je t'avais également donné l'url du code d'ouverture du fichier à utiliser selon les cas.
    Si ton fichier a des points-virgules pour séparateurs de données, tu dois l'ouvrir en tant que fichier texte (Excel 2003)
    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
    Sub Ouvrir(Chemin As String, FL1 As Workbook)
    Dim NomFich As String
        NomFich = Dir(Chemin & "\")
        If NomFich = "" Or Right(NomFich, 4) <> ".csv" Then
             MsgBox "Aucun fichier trouvé dans " & Chemin & "."
             Exit Sub
        End If
        Do While NomFich <> ""
            'on reécupère le nom de la feuille sans l'extension
            NomFeuil = Left(NomFich, Len(NomFich) - 4)
            'on renomme le fichier en txt afin de pouvoir l'ouvrir
            NewName = Chemin & "\" & NomFeuil & ".txt"
            Name Chemin & "\" & NomFich As NewName
     
            '************ Code d'ouverture des fichiers ************
            Workbooks.OpenText Filename:=NewName, StartRow:=1, _
            DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter _
                :=False, Semicolon:=True
            DoEvents 'laisse au système le temps d'ouvrir le fichier si important
            '***********************************************
     
            '****** ici, on ne copie pas le classeur mais la feuille *******
            ActiveSheet.Copy After:=FL1.Sheets(FL1.Sheets.count)
     
            'feuille que l'on renomme du nom du classeur moins l'extension
            ActiveSheet.Name = NomFeuil
     
            'et on va chercher le classeur suivant
            NomFich = Dir
        Loop
    End Sub
    Ce code ouvre un csv ayant des ";" (points-virgules) pour séparateurs de données.
    Si les séparateurs sont des tabulations ou des virgules, l'url que j'ai mise en parle aussi !

Discussions similaires

  1. Place la liste des logiciels installés dans une feuille Excel
    Par ESVBA dans le forum Vos Contributions VBScript
    Réponses: 3
    Dernier message: 17/07/2011, 10h13
  2. [XL-2003] Liste des objets dessins dans une feuille Excel
    Par benladder dans le forum Conception
    Réponses: 1
    Dernier message: 09/08/2010, 04h47
  3. [XL-2007] [débutante VBA] trouver la liste des images utilisée dans une feuille
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/10/2009, 13h46
  4. [XL-2003] Insertion d'un fichier csv dans une feuille xls
    Par giom182 dans le forum Excel
    Réponses: 10
    Dernier message: 20/07/2009, 18h52
  5. [XL-2003] Importer automatiquement un fichier CSV dans une feuille
    Par Mikayel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/06/2009, 10h35

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