[VB]Problème d'accent

Fermé
Julie - 14 avril 2006 à 12:05
 Utilisateur anonyme - 22 mai 2008 à 13:49
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.
A voir également:

11 réponses

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
Utilisateur anonyme
14 avril 2006 à 14:42
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
Nathalie Harbonne
18 avril 2007 à 12:43
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
slolo2000 Messages postés 315 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 29 mai 2007 48
18 avril 2007 à 13:03
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Utilisateur anonyme
21 mai 2008 à 14:22
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
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
Utilisateur anonyme
21 mai 2008 à 18:58
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
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
Utilisateur anonyme
22 mai 2008 à 13:02
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
c'est un azerty et lorsque je change les parametres, il devient qwerty
0
Utilisateur anonyme
22 mai 2008 à 13:49
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