[VB]Problème d'accent

Julie -  
 Utilisateur anonyme -
Bonjour tout le monde !

Voilà, sous Excel je dois comparer deux cellules, mais je suis confronté au problème des accents.

Pour mon programme Toto Bédiba n'est pas pareil que Tot Bediba. Hors j'aimerai qu'il le voit comme identique. J'ai essayé de transformé mes chaines avec la fonctions UCASE, mais il met bien BEDIBA mais avec un grand E accentué :(

Comment je peux faire vous croyez ?

Un grand merci d'avance.

11 réponses

  1. jrx
     
    Function UCaseNoAccent(Valeur As String) As String
    
        Dim Boucle, Limite As Integer
        Dim Nouveau, Carac As String
        
        Nouveau = ""
        Limite = Len(Valeur)
        For Boucle = 1 To Limite
            Carac = Mid(Valeur, Boucle, 1)
            Select Case Carac
                Case "À", "Á", "Â", "Ã", "Ä", "Å", "à", "á", "â", "ã", "ä", "å": Nouveau = (Nouveau & "A")
                Case "Ç", "ç": Nouveau = (Nouveau & "C")
                Case "È", "É", "Ê", "Ë", "è", "é", "ê", "ë": Nouveau = (Nouveau & "E")
                Case "Ì", "Í", "Î", "Ï", "ì", "í", "î", "ï": Nouveau = (Nouveau & "I")
                Case "Ñ", "ñ": Nouveau = (Nouveau & "N")
                Case "Ò", "Ó", "Ô", "Õ", "Ö", "ð", "ò", "ó", "ô", "õ", "ö": Nouveau = (Nouveau & "O")
                Case "Ù", "Ú", "Û", "Ü", "ù", "ú", "û", "ü": Nouveau = (Nouveau & "U")
                Case "Ý", "ý", "ÿ": Nouveau = (Nouveau & "Y")
                Case Else: Nouveau = (Nouveau & UCase(Carac))
            End Select
        Next Boucle
    
        UCaseNoAccent = Nouveau
    
    End Function


    Mais à mon avis, la concaténation de chaîne de caractères VB n'est pas très performante....
    2
  2. Utilisateur anonyme
     
    Bonjour,

    je suggere une fonction qui transforme les mots en enlevant
    les accents. Dans la même optique que la fonction UCASE.

    quelque chose comme :

    Function Rep_Accent(Valeur As String) As String
    
        Dim Boucle, Limite As Integer
        Dim Nouveau, Carac As String
        
        Nouveau = ""
        Limite = Len(Valeur)
        For Boucle = 1 To Limite
            Carac = Mid(Valeur, Boucle, 1)
            Select Case Carac
                Case "A" To "Z", "a" To "z": Nouveau = (Nouveau & Carac)
                Case "é", "ê", "ë", "è": Nouveau = (Nouveau & "e")
                '...
                Case Else: Nouveau = (Nouveau & "ERREUR")
        Next Boucle
    
        Rep_Accent = Nouveau
    
    End Function
    
    


    ainsi tu pourra comparrer :
    Rep_Accent(Toto Bédiba) = Rep_Accent(Toto Bediba)

    Lupin
    0
  3. Nathalie Harbonne
     
    Bonjour,

    Le problème dans cette fonction est que quand tu codes

    [code]

    Case "A" To "Z", "a" To "z": Nouveau = (Nouveau & Carac)

    [/code]

    tu ne changes absolument rien au caractère qui est déjà sans accent!!

    Ilest donc necessaire de revoir cette partie du code.

    Cordialement.

    Nathalie
    0
  4. slolo2000 Messages postés 315 Statut Membre 48
     
    Salut Julie,

    Tu peux essayer ça.
    C'est du codé à "l'arrache" mais ça a le mérite de fonctionner ;o)

    Private Function Compare(ByVal s1 As String, ByVal s2 As String) As Boolean
    Dim CarToSearch As String
    Dim CarToReplace As String

    CarToSearch = "éèàêâäëü"
    CarToReplace = "eeaeaaeu"

    Compare = False

    For i = 1 To Len(CarToSearch)
    s1 = Replace(s1, Mid(CarToSearch, i, 1), Mid(CarToReplace, i, 1), 1, , vbTextCompare)
    Next

    If s1 = s2 Then
    Compare = True
    End If
    End Function

    Private Sub CommandButton1_Click()
    Dim s1 As String
    Dim s2 As String

    s1 = "Toto Bédiba"
    s2 = "Toto Bediba"

    If Compare(s1, s2) = True Then
    MsgBox "Yeah !", vbInformation
    Else
    MsgBox "No !", vbInformation
    End If
    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jp
     
    Bonjour,
    dans mon .vbs, j'ai shell.sendkeys "arrivé"
    et quand je le lance, pour qu'il écrive dans word, pas de é, juste arriv
    comment avoir arrivé
    merci
    0
  7. Utilisateur anonyme
     
    Bonjour,

    Cela doit dépendre de la configuration des paramètres régionaux de votre PC,
    car chez moi ça fonctionne nickel.

    Dim objShell
    
    Set objShell = WScript.CreateObject("WScript.Shell")
    
    objShell.Run "WinWord"
    Wscript.Sleep 1500
    
    objShell.SendKeys "Arrivé"
    
    objShell.SendKeys "{ENTER}"
    
    objShell.SendKeys "Journée"
    
    WScript.Quit(0)
    
    0
    1. jp
       
      merci , c'est exact, à la maison ça marche, mais comment et ou change t'on les paramètres réginnaux pour que cela fonctionne avec winword
      en tous merci pour la rapidité et la justesse de la réponse
      0
  8. Utilisateur anonyme
     
    re :

    // Démarrer / Panneau de configuration

    Sélectionner [ Options régionales et linguistiques ]

    Onglet [ Options régionales ]
    Section [ Standards et formats ]
    Chez moi, c'est [ Français (Canada) ]

    Section [ Emplacement ]
    Chez moi, c'est [ Canada ]

    Onglet [ Langues ]
    Section [ Service de texte et langues d'entrée ]
    Cliquer sur le bouton [ Détails... ]

    Nouveau panorama [ Service de texte et langues d'entrée ]
    Onglet [ Paramètres ]
    Section [ Langue d'entrée par défaut ]
    Chez moi, c'est [ Français (Canada) - Canadien multilingue standard ]

    Section [ Services installés ]
    Dans cette section vous pouvez avoir plusieurs type d'installé.

    N.B. L"important est d'avoir dans la section [ Langue d'entrée par défaut ].
    le bon type versus le clavier physique que vous utilisé.

    Lupin
    0
  9. jp
     
    non ça ne marche toujours pas et en selectionnant cette langue, mon clavier est inversé a=q etc
    sur l'autre ordi ou ça marche, la langue est le français (france)
    merci pour les efforts
    jp
    0
  10. Utilisateur anonyme
     
    re :

    L'inversion se produit également chez moi lorsque que je fait l'installation de Windows.
    Lorsque je choisi la langue [ Français ], le systême choisi un clavier [ Français (France) ],
    mon clavier étant de type [ QWERTY ], il y a inversion de certaines lettres,
    et si je ne m'abuse les claviers d'europe sont de type [ AZERTY ].
    Une fois que j'ai changé la langue du clavier, le tout se remet dans l'ordre.

    Cela me confirme bien qu'il s'agit d'un paramètre de langues du clavier.

    De quel type est ton clavier [ QWERTY ] ou [ AZERTY ], en somme quelle est la première
    lettre dans le coin supérieur gauche de ton clavier, un [ Q ] ou un [ A ] ?

    Lupin
    0
  11. jp
     
    c'est un azerty et lorsque je change les parametres, il devient qwerty
    0
  12. Utilisateur anonyme
     
    re:

    QWERTY est un clavier de type [ Français (Canada) ]

    La première lettre dans le coin supérieur gauche de mon clavier est un [ Q ].

    Donc si la première lettre dans le coin supérieur gauche de mon clavier est un [ A ].

    Il faut paramètre la langue , l'emplacement et le type de clavier en concordance (réf. message 8 )

    Lupin
    0