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 :

Récupérer un mot deux lignes en dessous d'un mot recherché dans un fichier txt


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Particulier
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Récupérer un mot deux lignes en dessous d'un mot recherché dans un fichier txt
    Bonjour,

    J'ai écrit une fonction me permettant de trouver un mot dans un fichier txt et je souhaiterais récupérer un mot situé deux lignes en dessous de ce premier mot rechercher pour le mettre dans excel. Cela fait 4h que je cherche désespérément
    Pourriez-vous m'aider ?

  2. #2
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut




    Bonjour,

    joindre le fichier texte accompagné du code balisé (cf règles du forum) et des tenants & aboutissants …



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Candidat au Club
    Homme Profil pro
    Particulier
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci de votre retour
    Voici mon code avec en pièce jointe une partie du fichier txt contenant le mot à rechercher


    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
     
    Sub Macro_Date_et_societe()
     
    Dim renseignements_societe As String, renseignements_date As Date
        If Range("B2") = "" Then
            renseignements.SHOW 'pour demander le nom de la société dans l'UserFom
        Else
            MsgBox "Audit de la société " & Range("B1") & " en date du " & Range("B2") 'Afficher la société + date de l'audit si déjà audité
        End If
     
    Dim strLine As String
    Open "E:\Olivier\Bureau\TestVBA\putty_10.155.119.11.txt" For Input As #1 'ouvrir le fichier txt
     
    Do While Not EOF(1)
     
        Line Input #1, strLine
        If InStr(1, strLine, "SHOW OA INFO") > 0 Then 'trouver la ligne SHOW OA INFO
        ' ?? se positionner 4 lignes après et dernière "Part Number   :"
            Range("B3") = strLine 'Ecrire dans la cellule B3
            Close #1
            Exit Sub
        End If
     
    Loop
     
    Close #1
     
     
    End Sub
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 432
    Points
    1 432
    Par défaut
    Bonjour,

    Les expressions régulières semblent une bonne solution:

    Dans Outils -> Références..., coche "Microsoft VBScript Regular Expressions 5.5".

    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
    Private Function ReadTxtFile(txtFile As String) As String
        'This function returns the whole content of a text file as one string.
        Dim fso As Object
        Dim f As Object
     
        Const ForReading As Integer = 1
     
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        On Error Resume Next
        Set f = fso.OpenTextFile(txtFile, ForReading)
        On Error GoTo 0
        If f Is Nothing Then Err.Raise vbObjectError + 10001, , "File " & txtFile & " could not be found."
     
        'If empty file, an error is raised; continue
        On Error Resume Next
        ReadTxtFile = f.ReadAll
        f.Close
     
    End Function
     
     
     
    Sub test()
        Dim reg As New VBScript_RegExp_55.RegExp
        Dim matches As VBScript_RegExp_55.MatchCollection
        Dim match As VBScript_RegExp_55.match
        Dim txt As String
     
        txt = ReadTxtFile(ThisWorkbook.Path & "\putty_10.155.119.11.txt")
     
        reg.Global = True
        reg.MultiLine = True
        reg.Pattern = "^\>SHOW OA INFO(?:\r\n.*){4}Part Number[ \t]*: *([^\r\n]+)$"
     
        If reg.test(txt) Then
            Set matches = reg.Execute(txt)
     
            For Each match In matches
                Debug.Print match.SubMatches(0)
            Next match
        End If
    End Sub

  5. #5
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Comme j'ai l'impression que les 4h ont été plus passées à poser la question dans divers forums,
    je m'en tiens au B-A-BA d'Excel nécessitant peu de lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 25/05/2015 par The Noob Simulator
    '
        Application.ScreenUpdating = False
        Workbooks.Open "D:\Tests4Noobs\putty_10.155.119.11.txt"
        Set V = ActiveSheet.Columns(1).Find(">SHOW OA INFO")
        If Not V Is Nothing Then V = Split(V(5, 2).Value, " : ")
        ActiveWorkbook.Close
        If IsArray(V) Then If UBound(V) Then MsgBox V(1)
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  6. #6
    Candidat au Club
    Homme Profil pro
    Particulier
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Comme j'ai l'impression que les 4h ont été plus passées à poser la question dans divers forums,
    je m'en tiens au B-A-BA d'Excel nécessitant peu de lignes de code :
    Merci pour cette remarque pas top...

    Effectivement j'ai bien posté dans un autre forum afin d'avoir des réponses différentes.
    voici ce que j'ai récupéré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Application.ScreenUpdating = False
        Workbooks.Open "X:\FautBienCommencerQlqPars\putty_10.155.119.11.txt"
        Set OA_SN = ActiveSheet.Columns(1).Find(">SHOW OA INFO")
        If Not OA_SN Is Nothing Then OA_SN = Split(OA_SN(5, 2), " : ")
     
        ActiveWorkbook.Close
        Range("B3") = OA_SN(1)
    Merci pour le coup de main et bonne soirée

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2015, 15h55
  2. Réponses: 5
    Dernier message: 12/04/2011, 15h42
  3. Réponses: 1
    Dernier message: 22/06/2009, 15h19
  4. detecter une ligne a un seul mot dans un fichier txt
    Par malikoo dans le forum Général Python
    Réponses: 9
    Dernier message: 04/07/2007, 19h43
  5. récupérer un mot dans un fichier txt
    Par thedevil dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/05/2007, 14h59

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