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 :

Macro fonctions texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut Macro fonctions texte
    Bonjour,

    Je suis une quiche en macro. J'ai essayé de faire avec un enregistrement mais ce n'est pas suffisant. Mes connaissances sont limitées en VBA.

    Je vous expose mon souci. J'ai un fichier TXT d'environ 20000 lignes se présentant sou cette forme :

    c:\export\AAA-20121011-00001-121011-00001.XML
    c:\export\AAA-20121011-00002-121011-00002.XML
    c:\export\AAA\121011
    c:\export\AAA\121011\00001
    c:\export\AAA\121011\00002
    c:\export\AAA\121011\00001\12101100010000100001.PDF
    c:\export\AAA\121011\00002\12101100020000100001.PDF


    L'idée est d'avoir un fichier CSV avec comme séparateur le ;

    Il faudrait :

    - Ne conserver sur les lignes ayant un fichier, c'est à dire les lignes où il y a un point(.)
    - Sur ces lignes, couper la ligne à l'anti-slash pour obtenir un tableau de cette forme
    Colonne A : Ligne complète (ex : c:\export\AAA-20121011-00002-121011-00002.XML)
    Colonne B : Premier répertoire (ex : export) sans la lettre de lecteur
    Colonne C : 2ème répertoire. S'il n'existe pas, mettre un blanc
    Colonne D : 3ème répertoire. S'il n'existe pas, mettre un blanc
    Colonne E : 4ème répertoire. S'il n'existe pas, mettre un blanc
    Colonne F : le nom du fichier (ex : AAA-20121011-00002-121011-00002.XML)


    Je suis sous Excel 2010.
    Pourriez vous m'aider. Merci.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, lire ceci

    Bref au final qqch comme ceci, si j'ai bien compris ta demande :
    Affecter un bouton à la procédure SelFichier
    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
    Option Explicit
     
    Sub SelFichier()
    Dim sChemin As String
        sChemin = ThisWorkbook.Path
     
        With Application.FileDialog(msoFileDialogFilePicker)
            .InitialFileName = sChemin & "\"
            .Title = "Sélectionner le fichier TXT"
            .AllowMultiSelect = False
            .ButtonName = "Sélection Fichier"
            .Filters.Clear
            .Filters.Add "Texte", "*.txt", 1
            .Show
            If .SelectedItems.Count > 0 Then
                DoEvents
                Lecture .SelectedItems(1)
            End If
        End With
    End Sub
     
    Private Sub Lecture(sNomFichier As String)
    Dim sChaine As String
    Dim NumFichierIn As Integer, NumFichierOut As Integer
    Dim sFichierOut As String, i As Long
    Dim Ar() As String, sOut As String
    Const sSeparateur As String = ";"
     
        Close
     
        sFichierOut = ThisWorkbook.Path & "\" & "FichierOut.csv"
     
        NumFichierIn = FreeFile
        Open sNomFichier For Input As #NumFichierIn
            NumFichierOut = FreeFile
            Open sFichierOut For Output As #NumFichierOut
                Do While Not EOF(NumFichierIn)
                    Line Input #NumFichierIn, sChaine
                    sOut = ""
                    If ExistenceFichier(sChaine) Then
                        sOut = sChaine & sSeparateur
                        sChaine = Replace(sChaine, "c:\", "")
                        Ar = Split(sChaine, "\")
                        For i = LBound(Ar) To UBound(Ar)
                            sOut = sOut & Ar(i) & sSeparateur
                        Next i
                        Print #NumFichierOut, sOut
                    End If
                Loop
            Close #NumFichierOut
        Close #NumFichierIn
    End Sub
     
    Private Function ExistenceFichier(sFichier As String) As Boolean
        ExistenceFichier = Dir$(sFichier) <> ""
    End Function

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/12/2008, 09h45
  2. macro : fonction recherche
    Par M8407108 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/12/2007, 23h45
  3. exécution macro fonction dans VBE
    Par Maxence45 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/11/2007, 08h57
  4. Fonction texte StatusBar et Cmenu
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 12/04/2007, 16h57
  5. macro import text
    Par student007 dans le forum Access
    Réponses: 6
    Dernier message: 06/02/2006, 20h00

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