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 :

Projet VBA: Concaténage, conversion et traitement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut Projet VBA: Concaténage, conversion et traitement
    Bonjour à tous,

    Après avoir fait pas mal de recherches sur ce forum pour pouvoir demander votre expertise après avoir longuement bloqué.

    J'explique ma situation: je dispose de logs sous 6 formats différents.
    Chaque format possède un nom et une structure particulière mais qui reste la même pour tout les logs d'une famille, seule la date et l'heure change. Certains de ses logs qualifient un changement d'état (activé, désactivé), d'autres donnent une valeur numérique ou écrite. Tout les fichiers sont dans le même dossier et il existe plusieurs centaines de fichiers txt pour chaque famille de log, en sachant que d'autres seront ajoutés dans le futur en conservant la même forme.

    J'ai pour but de faire une interface sur VBA me permettant de rendre la lecture de ses fichiers plus sembles en regroupant tout cela dans un fichier excel et en automatisant au maximum la procédure. Bien que j'ai déjà une idée de comment faire pour la partie finale du projet, les premiers pas sont assez difficiles, étant un peu rouillé, surtout pour concaténer et transformer le fichier txt en xls.

    J'ai tout d'abord essayé une solution simple en DOS avec un copy *.txt qui fonctionne bien pour fusionner tout les fichiers, mais ceux-ci étant tous regroupés dans le même fichier, la conversion en xls est assez compliquée étant donné le format différent de chaque famille de log.
    J'ai ensuite essayé quelques solutions en VBA en recherchant des solutions ici, mais aucune que je n'ai trouvé ne parlait de mon cas, à savoir un nom variable selon l'heure et la date (ex: test_2014-10-30_23h40m).

    Auriez-vous donc une solution pour me permettre de mettre chaque famille de logs dans une feuille séparée ainsi que pour convertir en fonction des données sous format xls? (les données étant presque tout le temps sous la forme date- heure - donnée séparé par des espaces).

    Merci beaucoup.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    cela pourrait être possible avec une présentation digne de ce nom, claire & exhaustive, avec tenants & aboutissants …

    Je confirme l'inutilité de concaténer les fichiers texte en un seul vu leurs différentes structures.
    Dans un premier temps, définir comment repérer chaque famille …
    Utiliser la fonction Dir pour parcourir les fichiers d'un dossier (voir l'aide VBA et son exemple).


    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    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, l'enregistreur de macros te permettrait de dégrossir la chose, il faudra optimiser manuellement le code vba proposé.

  4. #4
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut
    Bonjour à tous,

    Merci déjà de vos réponses.
    Pour le concaténage, on m'a fourni entre temps les logs sous une autre forme, ceux-ci possédant maintenant toute la même structure de cette façon (je ne peux pas fournir les fichiers malheureusement)
    INTITULE
    DATE HEURE VALEUR
    Etant donné qu'un fichier texte est créé pour chaque modification, le but de tout ce projet est d'avoir une feuille dans Excel qui résume toutes ces modifications dans l'ordre chronologique de façon lisible.

    Je suis donc reparti sur la fusion de tout les fichiers textes en un seul, créér une macro pour la conversion d'Excel qui me donne un tableau lisible, avec date en A2, heure en B2, Intitulé en C1 et valeur en C2. A chaque fois, l'intitulé reste identique, tout le reste change, et cet ordre se répète constamment.

    Pour transférer les données sur une autre feuille, j'ai pensé à faire une recherche rapportant les adresses de chaque occurrence d'un intitulé, puis d'afficher les informations voulues grâce à leur position relative par rapport à l'intitulé, tout en faisant une boucle jusqu'à atteindre une case vide pour avoir toutes les valeurs.
    Qu'en pensez-vous ?

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Les boucles et les tests conditionnels sont souvent loin d'être les plus efficaces !

    Pour le transfert de données, mieux vaut utiliser un filtre ou un filtre avancé

  6. #6
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut
    Il faudrait donc que j'utilise les filtres avec un offset afin de pouvoir sélectionner l'heure, la date et la valeur utile ? Je vais essayer cela, car il est vrai que les filtres marchent très bien pour trouver des valeurs, mais je n'ai jamais essayé de "décaler" la sélection d'un filtre.

    Bonjour,

    N'ayant pas trouvé de solution avec les filtres, je continue d'une autre manière avec des boucles.

    J'essaie déjà de faire le code pour coller les cellules recherchées (donc uniquement la case CRITERE et pas le reste), sans succès, je n'ai pas d'erreurs mais rien ne se passe. Auriez-vous une explication ?

    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
    Sub Copy_To_Another_Sheet_1()
        Dim FirstAddress As String
        Dim MyArr As Variant
        Dim Rng As Range
        Dim Rcount As Long
        Dim I As Long
        Dim NewSh As Worksheet
     
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
     
        'Fill in the search Value
        MyArr = Array("Wawawa")
     
        Set NewSh = Worksheets.Add
     
        With Sheets("Sheet1").Range("A1:Z100")
     
            Rcount = 0
     
            For I = LBound(MyArr) To UBound(MyArr)
                Set Rng = .Find(What:=MyArr(I), _
                                After:=.Cells(.Cells.Count), _
                                LookIn:=xlFormulas, _
                                LookAt:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=False)
                If Not Rng Is Nothing Then
                    FirstAddress = Rng.Address
                    Do
                        Rcount = Rcount + 1
     
                        Rng.Copy NewSh.Range("A" & Rcount)
     
                        Set Rng = .FindNext(Rng)
                    Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress
                End If
            Next I
        End With
     
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End Sub

    EDIT: j'ai trouvé une grande partie de la solution.
    Cependant, il me manque toujours la copie de la ligne entière, cette solution ne copie que la colonne pour l'instant.

Discussions similaires

  1. [VBA-E] Temps de traitement long
    Par argoet dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/05/2006, 09h58
  2. [VBA Excel] conversion d'une chaine en numérique
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2005, 17h56
  3. [VBA][EXCEL]Conversion d'une chaine en single
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2005, 17h28
  4. "Nettoyer" Un PROJET VBA ??
    Par samlepiratepaddy dans le forum Access
    Réponses: 4
    Dernier message: 30/10/2005, 17h58
  5. Migrer un projet VBA Excel vers VB
    Par Phoon0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2005, 11h09

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