Erreur Access fonction nbcar

Anonyme
2024-07-17T10:37:17+00:00

Bonjour,

Dans Access 365, la fonction NBCAR renvoie des résultats faux pour les chaînes comportant des accents.

Par exemple, la fonction NBCAR("Abcès") renvoie 6 au lieu de 5 !

Y a t-il un moyen de corriger ou de contourner ce problème ?

Merci.

Microsoft 365 et Office | Access | Autres | Autres

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

4 réponses

  1. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-07-19T09:17:56+00:00

    Bonjour

    Il s'agit d'une fonction/Function (pas une procédure/Sub), elle doit donc être utilisée soit via le générateur d'expression dans un(e) Requête/Formulaire/Etat, soit par un autre code VBA pour alimenter une variable par exemple.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2024-07-19T08:56:39+00:00

    Bonjour,

    Désolé, mais je ne comprends rien.

    Ce code est censé faire quoi ?

    Si je le recopie dans un module VBA Access dans une base vierge et que je clique sur Exécuter, Access ouvre une fenêtre demandant de choisir une macro alors qu'il n'y en a pas, même après l'avoir enregisté.

    Si je demande le pas à pas détaillé, il ne se passe rien et une alerte sonore est produite.

    Merci quand même.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-07-17T11:46:30+00:00

    Je peux te proposer ce code, mais il n'est pas très rapide (travaillant caractère/caractère) ni complet (ne traite qu'une plage de caractères diacritiques)

    Function RemoveDiacritics(strInput As String) As String

    Dim i           As Integer 
    
    Dim strFormD    As String 
    
    Dim strOutput   As String 
    
    Dim strC        As String 
    
    Dim intAsc      As Integer 
    
    strFormD = StrConv(strInput, vbUnicode) 
    
    For i = 1 To Len(strFormD) 
    
        strC = Mid(strFormD, i, 1) 
    
        intAsc = AscW(strC) 
    
        ' Si le caractère n'est pas dans la  1ere plage des diacritiques 
    
        If Not ((intAsc >= &H300) And (intAsc <= &H36F)) And intAsc > 32 Then 
    
            strOutput = strOutput & strC 
    
        End If 
    
    Next 
    
    RemoveDiacritics = strOutput 
    

    End Function

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-07-17T11:25:15+00:00

    Bonjour,

    Exemple sous Excel (Je ne sais pas si tu est dans ce cas, c'est la même chose dans Access)

    Image

    Le "é" peut être généré de 2 façon :

    > Le caractère "é" => Ligne 3

    > Le caractère e associé au caractère " ' " accent via les caractères diacritiques (Voir Diacritique — Wikipédia (wikipedia.org)) => Ligne 4

    La ligne 4 contient bien 4 caractères informatique

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire