VBFILEFIND : RECHERCHE DE FICHIERS POUR REMPLACER CELLE DE WINDOWS

cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 21 nov. 2010 à 11:58 - Dernière réponse : cs_Patrice99 1220 Messages postés jeudi 23 août 2001Date d'inscription 24 septembre 2017 Dernière intervention
- 1 avril 2017 à 09:14
Commentaires sur une source Créer une discussion Signaler Répondre
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

http://codes-sources.commentcamarche.net/source/52496-vbfilefind-recherche-de-fichiers-pour-remplacer-celle-de-windows

Afficher la suite 
cs_Patrice99 1220 Messages postés jeudi 23 août 2001Date d'inscription 24 septembre 2017 Dernière intervention - 6 juil. 2014 à 09:51
Version 1.03 : Tri des résultats, passage en VB 2010 - DotNet 4.0.
cs_Patrice99 1220 Messages postés jeudi 23 août 2001Date d'inscription 24 septembre 2017 Dernière intervention - 19 mars 2017 à 10:12
Version 1.07 : Sauvegarde de la taille des colonnes, notamment.
Whismeril 10585 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 décembre 2017 Dernière intervention > cs_Patrice99 1220 Messages postés jeudi 23 août 2001Date d'inscription 24 septembre 2017 Dernière intervention - 19 mars 2017 à 19:40
Bonjour,
pour la recherche sur les noms de fichiers, il y a peut être plus simple en combinant un directory.getFies, qui prend en paramètre un pattern utilisant les joker * et ? et une requête Linq pour les fichiers exclus.

Un exemple vite fait
Edit exemple amélioré
Dim exclusions() As String = { "pas ca", "niCeluilà" }
Dim ouChercher As String = "C:\Temp"
Dim pattern As String = "*a*.txt"

Dim resultats() As String = (
    From f In Directory.GetFiles(ouChercher, pattern)
    Where (Not exclusions.Any(Function(ex) ExclureFichier(ex,f)))
    Select f).ToArray()


''' <summary>
''' Methode qui supprime les accents et autres signes diacritiques, source http://www.developpez.net/forums/d286030/dotnet/langages/csharp/supprimer-accents-lettre/
''' </summary>
''' <param name="stIn"></param>
''' <returns></returns>
Private Function RemoveDiacritics(ByVal stIn As String) As String
	Dim stFormD As String = stIn.Normalize(NormalizationForm.FormD)
	Dim sb As New StringBuilder()

	For ich As Integer = 0 To stFormD.Length - 1
		Dim uc As UnicodeCategory = CharUnicodeInfo.GetUnicodeCategory(stFormD.Chars(ich))
		If uc <> UnicodeCategory.NonSpacingMark Then
			sb.Append(stFormD.Chars(ich))
		End If
	Next ich

	Return (sb.ToString().Normalize(NormalizationForm.FormC))
End Function

Private Function ExclureFichier(ByVal Critere As String, ByVal Fichier As String, Optional ByVal SensibleCasse As Boolean = False, Optional ByVal SensibleDiacritique As Boolean = False) As Boolean
	If Not SensibleCasse Then
		'on passe tout en minuscule, comme ça tout le monde à la même casse
		Critere = Critere.ToLower()
		Fichier = Fichier.ToLower()
	End If

	If Not SensibleDiacritique Then
		'on enlève tous les signes diacritiquess (accents, cédilles etc..)
		Critere = RemoveDiacritics(Critere)
		Fichier = RemoveDiacritics(Fichier)
	End If

	Return System.IO.Path.GetFileNameWithoutExtension(Fichier).Contains(Critere)

End Function


cs_Patrice99 1220 Messages postés jeudi 23 août 2001Date d'inscription 24 septembre 2017 Dernière intervention > Whismeril 10585 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 décembre 2017 Dernière intervention - 1 avril 2017 à 09:12
Oui, pas mal, je vais peut être inclure ça dans une prochaine version, merci.
cs_Patrice99 1220 Messages postés jeudi 23 août 2001Date d'inscription 24 septembre 2017 Dernière intervention - 1 avril 2017 à 09:14
Version 1.08 : Iconisation : ignorer taille des colonnes
Commenter la réponse de cs_ghuysmans99

16 réponses

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.