Bonjour,

Je cherche un moyen de comparer 2 texte, sans tenir compte de la casse et des accents.

Il semble qu'il faille utiliser la fonction String.Compare, avec une CultureInfo.

Mais quand j'essaye ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Imports System
Imports System.Globalization
 
Public Module Module1
 Public Sub Main()
  Console.WriteLine(String.Compare("Jean", "Jeàn", True, New CultureInfo("fr-FR" )))
 End Sub
End Module
Ca me retourne -1. Alors que je m'attends à avoir 0.
Si je compare "Jean" avec Jexn", ça me retourne aussi -1.

Je sais qu'il y a aussi la possibilité de remplacer toutes les lettres accentuées par leur équivalents simples.
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
 
Function Sans_accents(ByVal Chaine As String) As String ' R. Dezan + Michel Pierron
 
        Dim a As String
        Dim b As String
        Dim u As Integer
 
        a = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
        b = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
        'Chaine = Replace(Replace(Replace(Replace(Chaine, "œ", "oe"), "Œ", "OE"), "æ", "ae"), "Æ", "AE")
        For i = 1 To Len(Chaine)
            u = InStr(1, a, Mid(Chaine, i, 1), 0)
            If u > 0 Then Mid(Chaine, i, 1) = Mid(b, u, 1)
        Next i
        Sans_accents = Chaine
    End Function
Mais je voudrais trouver une solution un peu plus "propre".

Merci d'avance pour votre aide.