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

VBA Discussion :

Lire un fichier.txt à partir d'une ligne variable VBA


Sujet :

VBA

  1. #1
    Candidat au Club
    Homme Profil pro
    Apprenti Ingénieur Automatisme
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Automatisme

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Lire un fichier.txt à partir d'une ligne variable VBA
    Bonjours je débute en VBA, et je souhaite traiter un fichier.txt.
    J'arrive à lire le fichier, à récupérer les infos qui me sont nécessaires mais j'en récupéré d'autre qui ne le sont pas car elles sont en début de fichier et qu'elles ont la même forme que celle que je souhaite traiter qui sont en milieu de fichier jusqu'a la fin. Donc je voudrai savoir comment puis je sois lire le fichier à partir d'une ligne donné jusqu’à la fin soit supprimer le début du fichier jusqu’à la ligne donné ?

    Voila ce que j'ai fait pour le moment :


    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
    57
    58
    59
    60
    61
    62
    63
    Option Compare Binary
     
    Sub Ouvrir()
     
    Dim finput As FileDialog
        Set finput = Application.FileDialog(msoFileDialogFilePicker)
        finput.Show
     
            If finput.SelectedItems.Count = 0 Then Exit Sub
     
        With Worksheets("Feuil1")
     
            If Not finput Is Nothing Then
                 .Range("G1").Hyperlinks.Add .Range("G1"), Address:=finput.SelectedItems(1)
            End If
     
        End With
    End Sub
     
    Sub lire()
     
    Dim intFic As Integer
    Dim strLigne As String
    Dim i As Integer
    Dim tblchamps() As String
     
    intFic = FreeFile
     
      Open Sheets("Feuil1").Range("G1") For Input As intFic
     
      i = 2
     
        While Not EOF(intFic)
     
          Line Input #intFic, strLigne
     
            If strLigne Like "Label*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("A" & i) = tblchamps(1)
     
            ElseIf strLigne Like "PartCode*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("B" & i) = tblchamps(1)
     
            ElseIf strLigne Like "Quantity*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("C" & i) = tblchamps(1)
     
            ElseIf strLigne Like "OrderNo*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("D" & i) = tblchamps(1)
     
            ElseIf strLigne Like "ProcessTime*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("E" & i) = tblchamps(1)
     
                i = i + 1
            End If
     
     
        Wend
      Close intFic
    End Sub
    Merci d'avance pour votre réponse

  2. #2
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, une recherche ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Apprenti Ingénieur Automatisme
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Automatisme

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    J'ai déjà recherché et c'est grâce à ces recherches que j'ai réussi à faire le code mis précédemment , mais je n'ai pas compris comment on fait pour lire un fichier par une ligne définit par son contenue jusqu’à la fin du fichier.
    Dan mon cas le fichier est décomposé en trois partit, et je souhaite le lire à partir de la troisième partit, chaque partit commence avec une ligne spécifique et c'est cette ligne que j'aimerai lire pour pouvoir ensuite traiter ce qu'il y a en dessous, sachant que ce n'est pas toujours la 30 ligne du fichier par exemple.

    merci de votre réponse !

  4. #4
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274

  5. #5
    Candidat au Club
    Homme Profil pro
    Apprenti Ingénieur Automatisme
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Automatisme

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Re bonjour,

    J'ai recherché dans ce document, et j'ai pu crée le code que j'ai grâce à ça, mais je me demande si dans mon cas il serait pas plus facile d'utiliser le FSO même si selon moi c'est une méthode moins intuitives et plus complexe ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Apprenti Ingénieur Automatisme
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Automatisme

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bon j'ai résolue mon problème en supprimant juste les lignes en trop et en complexifiant mes if

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Option Compare Binary
     
    Sub Ouvrir()
     
     
    Dim finput As FileDialog
        Set finput = Application.FileDialog(msoFileDialogFilePicker)
        finput.Show
     
            If finput.SelectedItems.Count = 0 Then Exit Sub
     
        With Worksheets("Feuil1")
     
            If Not finput Is Nothing Then
                 .Range("G1").Hyperlinks.Add .Range("G1"), Address:=finput.SelectedItems(1)
            End If
     
        End With
    End Sub
     
    Sub lire()
     
    Dim intFic As Integer
    Dim strLigne As String
    Dim i As Integer
    Dim tblchamps() As String
     
    intFic = FreeFile
     
      Open Sheets("Feuil1").Range("G1") For Input As intFic
     
      i = 2
     
        While Not EOF(intFic)
     
          Line Input #intFic, strLigne
     
     
          If strLigne Like "Label*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("A" & i) = tblchamps(1)
     
            ElseIf strLigne Like "PartCode*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("B" & i) = tblchamps(1)
     
            ElseIf strLigne Like "Quantity*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("C" & i) = tblchamps(1)
     
            ElseIf strLigne Like "OrderNo*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("D" & i) = tblchamps(1)
     
            ElseIf strLigne Like "ProcessTime[1-9]*=*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("E" & i) = tblchamps(1)
     
     
                i = i + 1
            End If
     
            If strLigne Like "ProcessTime=*" Then
                tblchamps() = split(strLigne, "=")
                Sheets("Feuil1").Range("L1") = tblchamps(1)
            End If
     
        Wend
      Close intFic
     
        Dim Cellule As Range
        Dim Derniere_Ligne As Long
        Dim Compteur As Long
     
        ' Déterminer la dernière ligne utilisée de la colonne A
        Derniere_Ligne = Range("a65536").End(xlUp).Row
     
        ' Démarrer du bas pour scanner toutes les lignes
        For Compteur = Derniere_Ligne To 2 Step -1
            ' Déterminer la cellule à traiter
            Set Cellule = Range("a" & Compteur)
            If Cellule Like "SEMAINE*" Then
                ' Cellules ayant "SEMAINE", on supprime
                Cellule.EntireRow.Delete
            End If
        Next Compteur
     
    End Sub

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

Discussions similaires

  1. Lire fichier texte à partir d'une ligne spécifique
    Par Msxty dans le forum VBScript
    Réponses: 7
    Dernier message: 15/07/2011, 15h42
  2. Réponses: 0
    Dernier message: 09/06/2011, 15h50
  3. Réponses: 8
    Dernier message: 07/09/2006, 11h43
  4. Lire un fichier .TXT en donnant une URL
    Par Matt2094 dans le forum Langage
    Réponses: 9
    Dernier message: 03/05/2006, 14h35
  5. Effacer le contenu d'un fichier a partir d'une ligne
    Par localhost dans le forum Linux
    Réponses: 3
    Dernier message: 04/04/2004, 04h47

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