IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplacer les accents


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 109
    Points : 49
    Points
    49
    Par défaut Remplacer les accents
    Bonjour à tous,

    Je sais que le sujet à déjà était abordé mais je voulais trouver la solution moi même malheureusement je bloque, je souhaite remplacer tous les caractères avec accents avec des caractères sans accents.

    Je souhaite effectuer ce remplacement dans deux colonnes, ma colonne adresse et ma colonne ville.

    Voici, ce que j'obtiens dans ma colonne A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Macro4()
    '
    ' Macro4 Macro
    '
     
    ' Range("A:A,C:C").Select
        Range("C1").Activate
        Selection.Replace What:="à", Replacement:="a", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="é", Replacement:="e", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="ô", Replacement:="o", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    End Sub
    Cette macro fonctionne mais, je me vois mal répéter 1000 fois l'opération, ma macro sera monstrueuse et ce n'est pas le but.
    Donc j'ai testé la macro ci-dessous et là c'est l'échec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro4()
    '
    ' Macro4 Macro
    '
     
    ' Range("A:A,C:C").Select
        Range("C1").Activate
        Selection.Replace What:=("à","é","ô"), Replacement:=("a","e","o"), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    End Sub
    Si qqun peut m'aider, ça serait sympa.

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu consulté la FAQ ?

    Comme par exemple cela : https://excel.developpez.com/faq/?pa...#EnleveAccents

    Philippe

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    voila ce que j'utilise perso
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    Public Function FormatCaractereSimple(ByVal Data As String)
        '------------------------------------------------------------------------
        'ANSI:(American National Standards Institute),jeu de caractères codé sur 8 bits
        'permettant de représenter un maximum de 256 caractères (de 0 à 255) à l'aide du clavier.
        'Les 128 premiers caractères (de 0 à 127) correspondent aux lettres et aux symboles du clavier nord-américain standard.
        'Les 128 caractères suivants (de 128 à 255) représentent les caractères spéciaux
        'comme les lettres de certains alphabets, les accents, les symboles monétaires et les fractions.
        'ASCII:(American Standard Code for Information Interchange),Jeu de caractères codé sur 7 bits
        'utilisé pour représenter les lettres et les symboles d'un clavier nord-américain standard.
        'Le jeu de caractères  utilise les 128 premiers caractères (de 0 à 127) du jeu de caractères ANSI.
        '------------------------------------------------------------------------
        'Formate le titre -->caracteres simples
        Data = Replace(Data, Chr(19), Chr$(45))
        Data = Replace(Data, Chr(145), Chr$(39)) '.." ' "...
        Data = Replace(Data, Chr(156), "oe")
        Data = Replace(Data, Chr(224), "a")
        Data = Replace(Data, Chr(225), "a")
        Data = Replace(Data, Chr(226), "a")
        Data = Replace(Data, Chr(227), "a")
        Data = Replace(Data, Chr(228), "a")
        Data = Replace(Data, Chr(229), "a")
        Data = Replace(Data, Chr(231), "c")
        Data = Replace(Data, Chr(232), "e")
        Data = Replace(Data, Chr(233), "e")
        Data = Replace(Data, Chr(234), "e")
        Data = Replace(Data, Chr(235), "e")
        Data = Replace(Data, Chr(236), "i")
        Data = Replace(Data, Chr(237), "i")
        Data = Replace(Data, Chr(238), "i")
        Data = Replace(Data, Chr(239), "i")
        Data = Replace(Data, Chr(240), "o")
        Data = Replace(Data, Chr(241), "n")
        Data = Replace(Data, Chr(242), "o")
        Data = Replace(Data, Chr(243), "o")
        Data = Replace(Data, Chr(244), "o")
        Data = Replace(Data, Chr(245), "o")
        Data = Replace(Data, Chr(246), "o")
        Data = Replace(Data, Chr(248), "o")
        Data = Replace(Data, Chr(249), "u")
        Data = Replace(Data, Chr(250), "u")
        Data = Replace(Data, Chr(251), "u")
        Data = Replace(Data, Chr(252), "u")
        Data = Replace(Data, Chr(253), "y")
        Data = Replace(Data, Chr(255), "y")
        FormatCaractereSimple = Trim(Data)
    End Function
    avec comme appel : Data = FormatCaractereSimple(LCase(Data))

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut re
    Hello,

    On pourrait peut-être imaginer une boucle avec la fonction de JP.
    Dans un même module copie/colle la bien pratique fonction de JP , qui fait partie des ce jour de ma trousse à fonction.
    Et le code ci dessous, possible bug car codé depuis mon smartphone et non testée, modifier la colonne à traité
    Bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Sub test ()
     
    Dim Cel as Range
    Dim Data as String
    Dim lDerlig as long
     
    lDerlig = Range("A" & Rows.Count).End(xlUp).Row
     
    For each Cel in Range ("A2:A"&lDerlig) ' à modifier lettre Colonne a traiter
     
      If Cel.value <> "" then
     
        Data = Cel.value
        Data = FormatCaractereSimple(LCase(Data))
        Cel.value = Data
      Else
         Exit for
      End If
     
    Next Cel
     
    End Sub
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir cette discussion ou ici

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour à tous
    Sans compter la solution que j'ai donnée il y a moins de trois semaines .
    Message n° 3 de la discussion suivante :
    https://www.developpez.net/forums/d1...res-accentues/
    (solution qui devrait être plus rapide qu'en parcourant avec Mid)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. Interbase: remplacer les accents
    Par cciocc dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/07/2008, 09h06
  2. Remplacer les accents de LATIN1 dans un UTF8 ?
    Par thelynks dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/02/2008, 22h13
  3. Fonction à utiliser pour remplacer les accents et autres caractères
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 12h50
  4. comment remplacer les accents mysql
    Par silvain dans le forum Outils
    Réponses: 13
    Dernier message: 22/02/2007, 12h09
  5. Remplacer les accents dans une chaîne
    Par mathieumg dans le forum C
    Réponses: 9
    Dernier message: 23/07/2006, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo