Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Nom et Prenom sans accent avec MID

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
J'aimerais changer le "ï" en "i" mais j'ai un message d'erreur sur ce code :
Sub Accents3()
Dim F3NomPrenom As String
Dim ch_avec As String: Dim ch_sans As String
'On Error Resume Next
Dim I As Byte: Dim position As Integer
F3NomPrenom = "Dupont Loïs"
ch_avec = "ÉÈÊËÔéèêëàçùôûïî+-."
ch_sans = "EEEEOeeeeacuouii "
For I = 1 To Len(F3NomPrenom)
position = InStr(ch_avec, VBA.Mid(F3NomPrenom, I, 1))
If position > 0 Then
VBA.Mid(F3NomPrenom, I, 1) = VBA.Mid(ch_sans, position, 1)
End If
Next I
F3NomPrenom = Application.Substitute(F3NomPrenom, " ", "")
F3NomPrenom = Application.Substitute(F3NomPrenom, ".", "")
End Sub

Et comment récupérer le nom prenom sans accent?
Pourrie vous m'aider?
Bien à vous
 

Dudu2

XLDnaute Barbatruc
Bonjour,
A titre d'info dans mes applis j'utilise cette fonction faite il y a longtemps.
VB:
'-----------------------------------------------
'Épuration d'une chaine des caractères accentués
'-----------------------------------------------
Private Function ÉpurerChaine(Chaine As String) As String
    Const LettresDiacritiques = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
    Const LettresNormales = "AAAAAACEEEEIIIINOOOOOUUUUYYaaaaaaceeeeiiiinooooouuuuyy"
    Dim i As Integer
    Dim k As Integer
    Dim S As String
  
    S = Chaine
  
    For i = 1 To Len(S)
        k = InStr(LettresDiacritiques, Mid(S, i, 1))
        If k Then Mid(S, i, 1) = Mid(LettresNormales, k, 1)
    Next i
  
    ÉpurerChaine = S
End Function
 

crocrocro

XLDnaute Impliqué
Bonjour à tous,
les réponses se croisent,
voici un groupe de fonctions qui permettent de formater une chaine de caractères passée en entrée. A combiner selon les besoins.
La fonction Sans_Accent je pense, correspond à celle de Dudu.

VB:
Function Sans_Point(pChaine As String) As String
' pour tous les "mots" finissant par ".", on remplace par " "
' ex : Mot1. Mot2. suite et fin
'   -> Mot1  Mot2  suite et fin
Dim Mot As Variant
Dim i As Integer
  Mot = Split(pChaine, " ")
  For i = LBound(Mot) To UBound(Mot)
    If Right(Mot(i), 1) = "." Then Mot(i) = Left(Mot(i), Len(Mot(i)) - 1)
  Next i
  Sans_Point = Join(Mot, " ")
End Function
Function Epure(pChaine As String) As String

Dim Chaine As String

    ' remplacement des caractères accentués
    Chaine = pChaine
    Epure = Sans_Accent(Chaine)
    ' suppression des caractères autres que numériques (0,1,2,...9) qu'alphabétiques non accentués (a,b,...z A,B,...Z)
    Epure = Sans_Special(Chaine)
    
End Function

Function Sans_Accent(pChaine As String) As String
Dim ListeAccent As String
Dim ListeSansAccent As String
Dim i As Integer
Dim pos
Dim Chaine As String

    ' remplacement des caractères accentués
    ListeAccent = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
    ListeSansAccent = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
    For i = 1 To Len(pChaine)
        pos = InStr(1, ListeAccent, Mid(pChaine, i, 1), 0)
        If pos > 0 Then
            Mid(pChaine, i, 1) = Mid(ListeSansAccent, pos, 1)
        End If
    Next i
    Sans_Accent = pChaine
    
End Function
Public Function Sans_Special(pChaine As String) As String
Dim i As Integer
Dim j As Integer
Dim Chaine As String
    ' suppression des caractères autres que numériques (0,1,2,...9) qu'alphabétiques non accentués (a,b,...z A,B,...Z)
    j = 0
    Chaine = ""
    For i = 1 To Len(pChaine)
        If ( _
            (Asc(Mid(pChaine, i, 1)) >= Asc("a")) And (Asc(Mid(pChaine, i, 1)) <= Asc("z")) Or _
            (Asc(Mid(pChaine, i, 1)) >= Asc("A")) And (Asc(Mid(pChaine, i, 1)) <= Asc("Z")) Or _
            (Asc(Mid(pChaine, i, 1)) >= Asc("0")) And (Asc(Mid(pChaine, i, 1)) <= Asc("9")) Or _
            (Mid(pChaine, i, 1) = " ") _
            ) _
        Then
            j = j + 1
            Chaine = Chaine & Mid(pChaine, i, 1)
        Else
        End If
    Next i
    Sans_Special = Chaine
End Function
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…