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

Access Discussion :

Reconnaître des mots avec accents peu importe la frappe


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 171
    Points : 79
    Points
    79
    Par défaut Reconnaître des mots avec accents peu importe la frappe
    Bonjour à tous.
    Dans une BDD ACCESS j'ai enregistré le nom des pays dans une table (T_Pays) en mentionnant dans la propriété "Format" du champ Pays_Nom le caractère ">" de manière à afficher le nom du Pays en majuscules de sorte que le nom de la Grèce apparaît dans la T_Pays en majuscules avec un accent sur le E majuscule. Si dans un formulaire (F_Pays) dans lequel je vérifie si le pays n'existe pas encore dans la T_Pays, j'ai également mentionné dans la propriété "Format" du champ Pays_Nom le caractère ">" de manière à afficher le nom du Pays en majuscules, mais si je tape :"grece" ou Grece" ou "GRECE", le nom du pays s'aafiche bien en majuscules dans le formulaire, mais l'existence du pays dans la table n'est pas signalée car dans le formulaire il n'y a pas d'accent sur le 1er "E" alors que dans la T_Pays, le nom du pays comporte un accent. Est-il possible de comparer un nom non accentué avec un nom identique mais accentué ?
    Dans l'espoir d'une solution, je vous remercie d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 589
    Points : 1 083
    Points
    1 083
    Par défaut
    Bonjour,

    Je pense que tu devrais t'intéresser à ce genre d'algorithme de contrôle de similarité.

    https://www.developpez.net/forums/d1...u-levenshtein/

    ONTAYG

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    Restons pragmatique

    La fonction ci-dessous nettoie les accents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Function ChaineSansAccent(ByVal s As String) As String
    ' 2010-05-01    Helas, MN
    '               Exemple : Ucase(ChaineSansAccent("il était l'affût à Foïx ùune fois"))
        Dim s1 As String, s2 As String, i As Long
     
        s1 = "àâáãäåéèêëïîìíöôðòóüûùúñçÿÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ"
        s2 = "aaaaaaeeeeiiiiooooouuuuncyAAAAAAEEEEIIIIOOOOOUUUU"
        For i = 1 To Len(s1)
            s = Replace(s, Mid$(s1, i, 1), Mid$(s2, i, 1))
        Next i
        ChaineSansAccent = s
     
    End Function
    Un exemple pour l'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    If ChaineSansAccent(nomPays) = ChaineSansAccent(chaine1) then ...

  4. #4
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 171
    Points : 79
    Points
    79
    Par défaut Reconnaître des mots avec accents peu importe la frappe
    Merci Micniv pour cet éclairage. Toutefois, je ne vois pas comment utiliser cette formule dans mon contrôle.
    Pour vérifier si le nom du pays introduit dans mon formulaire F_Pays existe ou non dans la table T_Pays, j'utilise ce test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Test de doublon sur Pays'
    Private Sub Pays_Nom_BeforeUpdate(Cancel As Integer)
        If DCount("*", "T_Pays", "Pays_Nom=""" & Me.Pays_Nom & """") <> 0 Then
        CléPays = "1"
        Beep
        DoCmd.OpenForm "FM_DoublonsPays"
      Else
      End If
    End Sub
    La variable "CléPays sert uniquement à adapter le texte à faire figurer dans le formulaire de message d'erreur en fonction de la nature de celle-ci.
    C'est dans mon instruction "DCount" que je ne parviens pas à retrouver le nom figurant dans la table s'il ne comprend pas le caractère accentué (GRèCE) le "è" étant une majuscule accentuée dans la table. Les noms "GRECE", "Grece" ou "grece" introduits dans le formulaire ne déclenche aucune alerte.
    Merci à tous.

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Normalement si on veut être cohérent tu dois utiliser la fonction de part et d'autre du signe égal.

    Comme ça tu peux saisir ""Grece"" ou "Grèce" dans ton formulaire.

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    Pour compléter le bon commentaire de User
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DCount("*", "T_Pays", "ChaineSansAccent(Pays_Nom) =""" & ChaineSansAccent(Me.Pays_Nom) & """") <> 0 Then

  7. #7
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 171
    Points : 79
    Points
    79
    Par défaut Reconnaître des mots avec accents peu importe la frappe
    Merci à tous pour vos éclaircissements compréhensibles.
    Néanmoins, étant débutant, malgré que j'ai lu pas mal d'informations, tutoriels et autres sur access, je ne comprends où et comment créer cette "Public Funtion"; j'ai regardé le générateur d'expression, mais ne la trouve pas dans les fonctions "Texte", en outre faut-il la placer dans la source de données du champ ? à l'intérieur de la procédure "Sub" qui teste les doublons sur le nom du pays ? Je l'ignore et ne trouve pas même sur le web on n'explique pas cela, apparemment. Je joins copie de la BDD que j'ai réalisée jusqu'à présent. Le problème se situe donc dans le formulaire Pays (F_Pays).
    Merci de votre patience et votre compréhension.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut
    A propos des arguments d'une Sub() ou d'une Function() lire ceci.
    La fonction proposée par micniv (Post#3), que je salue, est à coller dans un module standard de l'environnement VBA.

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    Voici ta base corrigée en ce qui concerne le formulaire Pays pour la saisie du champ Pays
    La fonction publique ChaineSansAccent() est déclarée dans un module standard Module1
    et j'ai juste revu à ma sauce l'evt Pays_beforeUpdate()
    Fichiers attachés Fichiers attachés

  10. #10
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 171
    Points : 79
    Points
    79
    Par défaut Reconnaître des mots avec accents peu importe la frappe
    Merci à tous pour votre attention et particulièrement à Micniv qui, en adaptant ma BDD, m'a permis de comprendre comment réaliser l'action souhaitée.
    Bonne journée à tous.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/09/2008, 22h03
  2. Réponses: 2
    Dernier message: 30/06/2008, 10h52
  3. [Tableaux] Affichage des lettres avec accents
    Par Fredo02 dans le forum Langage
    Réponses: 11
    Dernier message: 12/12/2007, 18h21
  4. [PhpDocumentor] Gestion des commentaires avec accents
    Par Nullos Oracle dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 18/09/2007, 11h24
  5. indexation fulltext des mots avec un trait d'union
    Par andraz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/03/2007, 16h46

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