besoin d'une macro excel
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

besoin d'une macro excel



  1. #1
    munsterkiler

    Smile besoin d'une macro excel


    ------

    bonsoir,

    je suis élève en prépa, et j'aurais besoin d'un petit coup de main de votre part.
    C'est pour mon TIPE, car je n'ai pas le temps cette année d'apprendre a programmer des macros sous excel alors que cela me ferait gagner énormément de temps.

    En fait, j'ai plusieurs centaines de fichiers textes qui ont chacun 3 colonnes (séparées par des ; ) et plus ou moins 2000 lignes.
    si j'essaie d'importer les données sur excel, je me retrouve avec une centaine de fichiers excel et je doit 'a la main' transférer toutes les données sur le même fichier excel, ce qui est en fait presque impossible vu le temps que ça prend.

    Il me faudrait une macro qui me permette d'importer seulement la 3 ème colonne de chaque fichier texte, sur des colonnes les unes a la suite des autres sur un unique fichier excel.

    je remercie d'avance celui qui me donnerait le code me permettant d'accomplir cela, pour le temps que ça me ferait gagner.

    merci

    -----

  2. #2
    Dormeur74

    Re : besoin d'une macro excel

    Je te prépare ça ce matin, je suis en roue libre.

  3. #3
    polo974

    Re : besoin d'une macro excel

    Si tu as accès à une machine linux (ou simplement graver un cd live):
    tu mets tes fichiers dans un dossier (rien que tes fichiers) (on l'appelle source)

    puis tu y ouvres une console texte et tu vas dans le dossier contenant source:
    cat source/* | cut -d';' -f3 >resultat

    et voilà, tu as un fichier (resultat) avec toutes les 3èmes colonnes de tes fichiers source.
    tu le récupères et tu l'importes dans ton tableur...

    c'est fou comme avec des "outils" graphiques on peut se compliquer la vie...
    Jusqu'ici tout va bien...

  4. #4
    Dormeur74

    Re : besoin d'une macro excel

    Tu colles impérativement le classeur Excel contenant la macro ci-dessous dans le dossier contenant les fichiers txt.
    Si tu es en prépa, je t'invite à te mettre le plus vite possible (après tes concours) à VBA. On peut traiter énormément de choses avec Excel. Bien sûr, rien ne vaut le C++, mais pour faire un truc vite fait sur le gaz, c'est vraiment pratique.

    Code:
    Sub Macro1()
        Dim I As Integer
        Dim Tableau() As String
        Dim NbrFiles As Integer
        Dim XL As Application
        Dim Ligne As String
        Dim SplitTab As Variant
        Dim NumLigne As Integer
      
        Set XL = Excel.Application
        
        'On met dans un tableau les fichiers TXT du dossier courant
        With XL.FileSearch
            .LookIn = ActiveWorkbook.Path
            .Filename = "*.txt" ' on ne prend que les extensions TXT
            If .Execute > 0 Then
                NbrFiles = .FoundFiles.Count
                ' On redimensionne le tableau dynamiquement pour avoir les coudées franches
                ReDim Tableau(NbrFiles)
                ' On charge le tableau avec les noms des fichiers trouvés
                For I = 1 To NbrFiles
                    Tableau(I) = .FoundFiles(I)
                Next I
            Else
                MsgBox "Ce dossier ne contient pas de fichiers texte (.TXT)"
                Exit Sub
            End If
        End With
        
        ' On extrait les données
        For I = 1 To NbrFiles
            NumLigne = 0
            If Tableau(I) <> ThisWorkbook.FullName Then
                ' On ouvre les fichiers TXT un à un
                Open Tableau(I) For Input As #1
                  ' On lit les lignes une à une
                  While Not EOF(1)
                    NumLigne = NumLigne + 1
                    Input #1, Ligne
                    ' On explose les 3 valeurs de chaque ligne
                    SplitTab = Split(Ligne, ";")
                    ' On colle la valeur de la 3e colonne dans le collecteur Excel
                    Cells(NumLigne, I).Value = SplitTab(2)
                  Wend
                Close #1
           End If
        Next I
        Set XL = Nothing
    End Sub
    Dernière modification par Dormeur74 ; 28/01/2012 à 09h12.

  5. A voir en vidéo sur Futura
  6. #5
    munsterkiler

    Re : besoin d'une macro excel

    bonjour,

    merci beaucoup de votre aide, malheureusement, le code bug au niveau de la fonction split et dit qu'elle n'est pas définie.
    et sinon, je découvre a quel point connaitre vb pourrait m'être utile pour la suite, donc je m'y mettrait des que j'ai finis mes concours ^^

    merci encore

  7. #6
    Dormeur74

    Re : besoin d'une macro excel

    Quelle est ta version Excel ?

  8. #7
    polo974

    Re : besoin d'une macro excel

    Sinon, tu installes python
    tu mets tes fichiers dans un dossier et tu lances ce script:

    Code:
    import sys, os
    
    try:
        len(sys.argv) == 4
    
        s= sys.argv[1]
        nbc=int(s)
        if nbc <1 or nbc >5: raise
        print nbc, "colonne"
        nbc -=1
    
        s= sys.argv[2]
        src=s
        if not os.path.isdir(src): raise
        print src , "dossier source"
    
        s= sys.argv[3]
        dst=s
        fw=open(dst,"w")
        print dst , "destination"
    
    except:
        print "usange: python lec.py  <num col> <dossier source> <nom fichier destination>"
        print "ex: python lec.py 3 src out"
        print sys.argv
        exit(1)
    
    for fname in sorted(os.listdir(src)):
        fname=src+os.sep+fname
        print fname
        f=open(fname,"r")
        for line in f:
            try:
                fw.write(line.split(';')[nbc].rstrip('\r\n')+os.linesep)
            except:
                print "oups fichier %s ligne zarb: <%s>" %(fname, line.rstrip('\r\n'))
        f.close()
    fw.close()
    Tu lances donc pour récupérer la 3ème colonne des fichiers dans le dossier src :
    python lec.py 3 src out
    Tu récupères la sortie dans le fichier out qu'il te suffit d'importer où tu veux...
    Jusqu'ici tout va bien...

  9. #8
    munsterkiler

    Re : besoin d'une macro excel

    je crois que c'est la version 2004 excel pour mac.

  10. #9
    polo974

    Re : besoin d'une macro excel

    Pour mac, donc tu as mac os x, une sorte d'unix (dérivé de bsd).

    alors la manip de mon premier post doit le faire direct.

    sinon, il est aussi facile d'installer python sur un mac...
    Jusqu'ici tout va bien...

Discussions similaires

  1. Appel d'une fonction Excel dans une macro
    Par Calia_Eowyn dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 26/10/2011, 11h01
  2. besoin d'une macro
    Par invite8f165be4 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 20/02/2011, 16h39
  3. Besoin d'aide au sujet d'une macro excel.
    Par invite329675bd dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 17/05/2010, 04h17
  4. Lancer ecran de veille windows lors du lancement d'une macro excel
    Par footale dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 02/12/2009, 11h04
  5. Macro Excel : Calcul d'une moyenne
    Par lolo66000 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 19/08/2009, 09h51
Découvrez nos comparatifs produits sur l'informatique et les technologies.