[VB]Problème d'accent

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. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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. 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
            2. 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
              1. 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
                1. 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
                  1. c'est un azerty et lorsque je change les parametres, il devient qwerty
                    0
                    1. 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