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)