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 :

recherche debut de ligne dans fichier texte en vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Points : 111
    Points
    111
    Par défaut recherche debut de ligne dans fichier texte en vba
    Bonjour,

    j'ai un fichier texte contenant plusieurs lignes et je desire modifier automatiquement les lignes suivantes qui sont situé quelque part dans le milieu de mon fichier :

    Mois ecoule : 05
    Jours ecoule : 17
    Heures ecoule : 08
    Minutes ecoule : 21

    En cliquant sur le bouton qui execute ma macro dans mon fichier excel, Mois ecoule sera remplace par month(now), Jours ecoule sera remplacer par day(now) et ainsi de suite pour les heures et les minutes.

    Je me demandais si on pouvait uniquement rechercher le debut de chaque ligne commencant par "Mois ecoule :" et remplacer seulement le chiffre a coté, c'est a dire remplacer 05 par la date actuel, donc 07 (juillet) et ainsi de suite pour les autres.
    Exemple, un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Si ligne contient "Mois ecoule :" alors
    remplacer la ligne entiere par "Mois ecoule = date(now)"
    Je pourrai facilement rechercher la ligne entiere et remplacer comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strtext = Replace(strtext, "document.form1.DebutMM1.value = '11'", "document.form1.DebutMM1.value = " & "'" & Format(Date, "mm") & "'")
    mais helas, ce n'est pas bon car je ne sais pas quel est la valeur de moi,s jours, heures et minutes lors de l'ouverture du fichier.

    J'ai essayer une condition if avec la fonction instr() mais ca ne marches pas du tout.

    Merci pour une piste svp.

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut mimosa,

    voici de quoi t'occuper. je n'ai pas testé donc il y aura certainement l'un ou l'autre bug.

    Le principe est de lire le fichier, et de faire les corrections en les sauvant sur un nouveau fichier texte (temporaire).

    A la fin on supprime le fichier Input et on renomme le fichier temp avec le nom de l'input.

    ATTENTION : Sauve bien ton fichier texte avant !!!!!!

    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
     
    Sub Patch_TXT()
    Dim Mois_string     As String
    Dim Jour_string     As String
    Dim Heure_string     As String
    Dim Minute_string    As String
    Dim LaLigne         As String
    Dim Mois_pos        As Long
    Dim Jour_pos        As Long
    Dim Heure_pos       As Long
    Dim Minute_pos      As Long
     
    Dim Input_file      As String
    Dim Output_File     As String
     
     
        Mois_string = "Mois ecoule : "
        Jour_string = "Jours ecoule : "
        Heure_string = "Heures ecoule : "
        Minute_string = "Mois ecoule : "
        Input_file = "nom complet du fichier en input.txt"
        Output_File = "nom complet du fichier en output TEMPORAIRE.txt"
        Open Input_file For Input As #1
        Open Output_File For Output As #2
        Do While Not EOF(1)
            Line Input #1, LaLigne
            Mois_pos = InStr(1, LaLigne, Mois_string, vbTextCompare)
            Jour_pos = InStr(1, LaLigne, Jour_string, vbTextCompare)
            Heure_pos = InStr(1, LaLigne, Heure_string, vbTextCompare)
            Minute_pos = InStr(1, LaLigne, Minute_string, vbTextCompare)
            Select Case True
               Case Mois_pos > 0
                    Mid(LaLigne, Mois_pos + Len(Mois_string), 2) = Month(Now())
               Case Jour_pos > 0
                    Mid(LaLigne, Jour_pos + Len(Jour_string), 2) = Day(Now())
               Case Heure_pos > 0
                    Mid(LaLigne, Heure_pos + Len(Heure_string), 2) = Hour(Now())
               Case Minute_pos > 0
                    Mid(LaLigne, Minute_pos + Len(Minute_string), 2) = Minute(Now())
            End Select
            Print #2, LaLigne
        Loop
        Close #1
        Close #2
        Kill Input_file
        Name Output_File As Input_file
     
     
     
    End Sub

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Points : 111
    Points
    111
    Par défaut
    Bonjour Godzestla,

    en faite, j'ai deja ma macro comme suit :
    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
    Sub fichier_Update2()
    Dim LaLigne As String
    Open "\\Srv41101a07\WebRoot\scripts\Update.js" For Input As #1
    Open "\\Srv41101a07\WebRoot\scripts\Update2.js" For Output As #2
    Do While Not EOF(1)
            Line Input #1, LaLigne
            If LaLigne = "document.form1.DebutMM1.value = '11'" Then
               LaLigne = "document.form1.DebutMM1.value = " & "'" & Format(Date, "mm") & "'"
            End If
            Print #2, LaLigne
    Loop
    Close #1
    Close #2
    Kill "\\Srv41101a07\WebRoot\scripts\Update.js"
    Name "\\Srv41101a07\WebRoot\scripts\Update2.js" As "\\Srv41101a07\WebRoot\scripts\Update.js"
    Open "\\Srv41101a07\WebRoot\scripts\Debut1.js" For Output As #1
    Print #1, "document.write('" & Format(Date, "mm") & "/" & Format(Date, "dd") & "-" & Hour(Now) & "H" & Format(Minute(Now)) & "')"
    Close #1
    End Sub
    Ce que je fais ici , c'est que je recherche si document.form1.DebutMM1.value = '11', ce que je devrais pas faire car je ne connais pas la valeur de document.form1.DebutMM1.value en tout temps. Je voudrais simplement donc mettre la condition que si je trouve dans mon fichier un debut de ligne qui commence par document.form1.DebutMM1.value, alors je remplace toute cette ligne par document.form1.DebutMM1.value = " & "'" & Format(Date, "mm") & "'", tel que par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If LaLigne commence par  "document.form1.DebutMM1.value " Then
               LaLigne = "document.form1.DebutMM1.value = " & "'" & Format(Date, "mm") & "'"
    Mais je sais pas comment dire on vba commence par

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If Left(LaLigne, len("document.form1.DebutMM1.value ") =  "document.form1.DebutMM1.value " Then
               LaLigne = "document.form1.DebutMM1.value = " & "'" & Format(Date, "mm") & "'"

  5. #5
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Points : 111
    Points
    111
    Par défaut
    Merci un million de fois Godzestla.. Ca marches impec maintenant.

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

Discussions similaires

  1. Saisie nouvelle ligne dans fichier texte
    Par maverick91 dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/08/2008, 15h02
  2. Réponses: 3
    Dernier message: 12/08/2008, 13h26
  3. Supprimer lignes dans fichier texte
    Par dr_octopus74 dans le forum VBScript
    Réponses: 1
    Dernier message: 20/02/2007, 17h54
  4. Retour A La Ligne dans fichier texte /?
    Par Phoenix_Blue dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/01/2007, 15h34
  5. ecrire a la ligne dans fichier texte.
    Par zulot dans le forum Langage
    Réponses: 7
    Dernier message: 12/09/2006, 12h02

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