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

Macros et VBA Excel Discussion :

Ignorer les accents [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut Ignorer les accents
    Bonjour à tous,

    J'expose mon petit problème

    J'ai un code qui va comparer la réponse de l'utilisateur à la valeur d'une cellule

    Le problème c'est que j'aimerai élargir au maximum la flexibilité des réponses,
    Non pas en termes d'ortographe, mais particulièrement au niveau des:
    -majuscules & minuscules
    -Accents

    J'ai trouver la solution pour la casse avec Mais en ce qui concerne les accents je ne trouve rien du tout

    Merci d'avance si quelqu'un connait une solution pour répondre à ce problème


    Cordialement
    Dodo

  2. #2
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Il faut passer par une fonction intermédiaire

    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
    Function SansAccent(texte As String)
                temp = texte
                temp = Replace(temp, "é", "E")
                temp = Replace(temp, "è", "E")
                temp = Replace(temp, "ê", "E")
                temp = Replace(temp, "à", "A")
                temp = Replace(temp, "â", "A")
                temp = Replace(temp, "î", "I")
                temp = Replace(temp, "ô", "O")
                temp = Replace(temp, "ù", "U")
                temp = Replace(temp, "û", "U")
                temp = Replace(temp, "-", " ")
                temp = Replace(temp, "'", " ")
                SansAccent = UCase(temp)
    End Function
     
     
    Sub test_ssaccent()
    If SansAccent("éùèàèzerer") = "EUEAEZERER" Then
    MsgBox "MATCH"
    Else: MsgBox "NO MATCH"
    End If
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut sans accents
    Bonjour Dodo69, Oliv et le Forum

    Dodo69,

    ne gère pas la casse mais la comparaison majuscule - minuscule (A = a)

    Pour ce qui est du code proposé par Oliv, je me permets de proposer une variation compressée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function ch_sans_accent(ch_characters As Range)
    liste_accents = "ÉÈÊËÔéèêëàçùôûïî"
    liste_sans_accents = "EEEEOeeeeacuouii"
    tempo = ch_characters.Value
    For i = 1 To Len(tempo)
            s = InStr(liste_accents, Mid(tempo, i, 1))
            If s > 0 Then Mid(tempo, i, 1) = Mid(liste_sans_accents, s, 1)
    Next
    ch_sans_accent = tempo
    End Function
    (récolté un jour sur la toile et adapté)

    Si en A1, tu as la valeur "àù", alors
    La fonction
    =ch_sans_accent(A1") dans une autre cellule te renvoie "au"

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Merci pour ta solution oliv qui est très proche ( identique en terme de construction) de celle que j'ai trouver...

    Je poste donc si y en a que ca interesse

    Dans un module ecrire une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Function Sans_accents$(Chaine$)  ' R. Dezan + Michel Pierron
     
     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 Then Mid(Chaine, i, 1) = Mid(b, u, 1)
     Next i
     Sans_accents = Chaine
     End Function
    Puis dans le module ou il compare la réponse de l'utilisateur à la valeur de la cellule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Sans_accents(sa_reponse) = Sans_accents(.Cells(alea, verif).Value) Then
    De cette manière il compare les deux chaine de caractère en enlevant les accents.

    Merci pour ta solution Oliv

    Cordialement Dodo

    Citation Envoyé par MarcelG Voir le message
    Bonjour Dodo69, Oliv et le Forum

    Dodo69,

    ne gère pas la casse mais la comparaison majuscule - minuscule (A = a)

    Pour ce qui est du code proposé par Oliv, je me permets de proposer une variation compressée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function ch_sans_accent(ch_characters As Range)
    liste_accents = "ÉÈÊËÔéèêëàçùôûïî"
    liste_sans_accents = "EEEEOeeeeacuouii"
    tempo = ch_characters.Value
    For i = 1 To Len(tempo)
            s = InStr(liste_accents, Mid(tempo, i, 1))
            If s > 0 Then Mid(tempo, i, 1) = Mid(liste_sans_accents, s, 1)
    Next
    ch_sans_accent = tempo
    End Function
    (récolté un jour sur la toile et adapté)

    Si en A1, tu as la valeur "àù", alors
    La fonction
    =ch_sans_accent(A1") dans une autre cellule te renvoie "au"
    Merci MarcelG, on a du récolté sur la même toile

    Merci à vous deux pour vos solutions

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

Discussions similaires

  1. [Dojo] [FilteringSelect] [Zend_Dojo_Form] Ignorer les accents
    Par cmasset dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 07/04/2009, 14h24
  2. comparaison de chaînes en ignorant les accents
    Par guigui5931 dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2007, 16h29
  3. Ignorer les accents
    Par semri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/06/2007, 23h32
  4. Ignorer les accents dans une requête
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/03/2007, 13h19
  5. ignorer les accents dans une recherche
    Par nono_cap dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 18h30

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