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

Vos Contributions VBScript Discussion :

Supprimer une/des ligne(s) d'un fichier texte contenant un texte précis


Sujet :

Vos Contributions VBScript

  1. #1
    Rédacteur

    Supprimer une/des ligne(s) d'un fichier texte contenant un texte précis
    bonjour,

    en suite d'une discussion récente, vous trouverez ci-dessous une fonction DelLines qui supprime une ou n lignes de texte en fonction de son contenu
    il est également possible de restreindre le critère au début ou fin de ligne
    comme il n'utilise pas de boucle de concaténation de chaines, le code est compact et très rapide même avec plusieurs milliers de lignes
    c'est un exemple méconnu de la fonction native Filter

    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
    Dim ContenuFichier
    ContenuFichier = "8;Vallet;Esteban" & vbNewLine & _
                     "1;Her;Bruno" & vbNewLine & _
                     "2;leGros;Henri7" & vbNewLine & _
                     "3;Petitgros2;Michel" & vbNewLine & _
                     "5;Vito;Abdoulaye"
     
    ' Tag : chaine recherchée dans la ligne à supprimer
    ' Pos : 0 -> position de Tag est libre
    ' Pos : 1 -> Tag est en début de ligne
    ' Pos : 2 -> Tag est en fin de ligne
    Function DelLines(source,tag,pos)
    	Dim dlm : dlm = Array(vbNewLine,"","",vbCr,vbLf,"",vbLf,"",vbCr)
    	DelLines = Join(Filter(Split(source,dlm(3 * pos)),dlm(3 * pos + 1) & tag & dlm(3 * pos + 2),False),dlm(3 * pos))
    End Function
    MsgBox DelLines(ContenuFichier,"2;",0)
    MsgBox DelLines(ContenuFichier,"2;",1)
    MsgBox DelLines(ContenuFichier,"uno",2)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  2. #2
    Rédacteur/Modérateur

    Salut



    Citation Envoyé par omen999 Voir le message
    bonjour,
    ......
    c'est un exemple méconnu de la fonction native Filter
    ......
    Comme tu le dis, le fait de ne pas boucler sur chaque ligne et de ne pas concaténer, c'est super rapide.
    Ben moi c'était une vraie découverte, ce qui fait que je me suis amusé à faire ceci
    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
    Option explicit
    Dim ContenuFichier 'pour simuler le contenu d'un fichier texte
    ContenuFichier ="Une histoire, pour vérifier une autre utilisation." & vbnewline & _
                    "Pourquoi ne pas essayer d'éliminer une ligne. Celle-ci définit par un POINT et non pas par un retour à la ligne." & vbnewline & _
                    "Pour l'exemple, élimination de deux lignes contenant les mots ""A que coucou""." & vbnewline & _
                    "Il n'y a pas de raison pour que cela ne fonctionne pas." & vbnewline & _
                    "Cette ligne va aussi être éliminée car elle contient A que coucou, si la formule est Ok."
     
    Dim MotRec,NewContenuFichier
    MotRec = "A que coucou"
    NewContenuFichier = Join(Filter(Split(ContenuFichier,"."),MotRec,False),".")
    'pour debeug
    MsgBox "ContenuFichier : (la simulation d'un fichier)" & vbnewline & vbnewline & ContenuFichier & vbnewline & vbnewline & _
           "---------------------------------------------------------------------------------------" & vbnewline & vbnewline & _
           "Le resultat," & _
           " NewContenuFichier contient maintenant:" & vbnewline & vbnewline & NewContenuFichier,vbOKOnly,"---- Démonstration ----"
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

###raw>template_hook.ano_emploi###