1. #1
    Nouveau membre du Club
    Inscrit en
    septembre 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 197
    Points : 36
    Points
    36

    Par défaut Supprimer accents et tirets entre les noms

    Bonjours
    J'ai sur ma feuille en colonne "A" une liste de noms avec des accents des tirets ou traits d’union.
    Je souhaiterai avec un code VBA pouvoirs retirer les accents et supprimer les tirets ou traits d’union
    tous en laissant un espace entre chaque nom.

    Je vous remercie d'avance

    Cordialement

    Max

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2017
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 45
    Points : 54
    Points
    54

    Par défaut

    Bonjour,

    La fonction Replace devrait pouvoir t'aider.
    Je te donne un lien qui t'aidera dans tes recherche.
    http://silkyroad.developpez.com/VBA/...racteres/#LI-J

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 948
    Points : 5 076
    Points
    5 076

    Par défaut

    Bonjour
    Commencer en effet en utilisant la fonction Replace (elle est plus simple pour un débutant)
    Une fois cette étape passée et comprise, donner la préférence à l'utilisation de l'instruction Mid (je dis bien "instruction" et non "fonction". Ce sont deux choses distinctes).
    Lorsque ces deux étapes/exercices auront été passées et comprises, je parlerai d'une autre méthode, plus complexe pour un débutant, mais plus rapide.
    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.

  4. #4
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 098
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 098
    Points : 14 832
    Points
    14 832
    Billets dans le blog
    1

    Par défaut re

    bonjour
    instruction/fonction je suis curieux
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 948
    Points : 5 076
    Points
    5 076

    Par défaut

    Bonjour patricktoulon
    bonjour
    instruction/fonction je suis curieux
    curieux de quoi ?
    Il existe une Fonction Mid et il existe une Instruction Mid
    Elles sont totalement distinctes et n'ont ni la même syntaxe, ni la même vocation.
    Tu ne le savais pas ?
    Regarde -->>
    Mid, instruction

    Remplace un nombre indiqué de caractères dans une variable de type Variant (String) par des caractères extraits d'une autre chaîne.

    Syntaxe

    Mid(stringvar, start[, length]) = string
    et
    Mid, fonction
    Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.

    Syntaxe

    Mid(string, start[, length])
    La première (l'instruction) intervient directement sur la chaîne de caractères et la modifie. Elle ne retourne RIEN (ce n'est pas une fonction).
    La seconde (la fonction) retourne une sous-chaîne de la chaîne de caractères. Elle ne modifie rien (ce n'est pas une instruction)
    Voilà voilà.

    EDIT : il est d'ailleurs d'autant étrange que tu poses cette question que je me rappelle très bien que j'ai utilisé l'instruction Mid dans une discussion à laquelle tu participais (il n'y a pas très longtemps) et que tu l'avais trouvée intéressante (toi-même).
    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.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 948
    Points : 5 076
    Points
    5 076

    Par défaut

    Bon ...
    Regarde donc, patricktoulon (tu va les voir, cette fonction et cette instruction)
    Et dans la foulée, un petit cadeau au demandeur
    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
    Sub teste()
          titi = supp_accents("éÊaéd-supp_accents-ïôéÊaéd-ïô")
    MsgBox titi
     
    End Sub
    Function supp_accents(chaine) As String
      tab_cars = "/àa/âa/ée/èe/êe/ëe/ïi/îi/ôo/ùu/ûu/üu/- " ' ici --> /xy veut par exemple dire remplacer x par y
      tab_cars = tab_cars & UCase(tab_cars) ' --->> si l'on veut également traiter leurs majuscules
      supp_accents = chaine
       For i = 1 To Len(supp_accents)
         c = Mid(supp_accents, i, 1) '--->> ça, c'est l'utilisation de la FONCTION Mid
         Select Case c
           Case "A-Z", "a-z", " " ' on ne fait rien (le roi de Prusse ne paye pas, hein ...)
           Case Else ' ce n'est donc ni une lettre sans accent, ni un espace -->> on veut bien alors travailler
             ou = InStr(tab_cars, "/" & c)
             If ou > 0 Then Mid(supp_accents, i, 1) = Mid(tab_cars, ou + 2, 1) '--->>et ça, c'est l'utilisation de l'INSTRUCTION Mid
           End Select
       Next
    End Function
    et il y a (me relire) encore mieux à faire
    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.

  7. #7
    Nouveau membre du Club
    Inscrit en
    septembre 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 197
    Points : 36
    Points
    36

    Par défaut

    Bonjour
    Pour unparia voilà en cherchant j'ai trouvé ceci qui foctionne trés bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Const AccChars$ = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
    Const RegChars$ = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
     
    Function Epure$(x$)
    Dim i%
    For i = 1 To Len(AccChars)
    x = Replace(x, Mid(AccChars, i, 1), Mid(RegChars, i, 1))
    Next
    Epure = Replace(x, "-", " ")
    End Function
    Merci encore unparia
    Bonne journée

    Max

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 948
    Points : 5 076
    Points
    5 076

    Par défaut

    Egalement, mais plus lent, apdf1
    Et si tu as bien compris ce code que tu as copié/collé, tu devrais savoir comment éviter ce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Epure = Replace(x, "-", " ")
    Tu vois comment, j'espère...
    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.

  9. #9
    Nouveau membre du Club
    Inscrit en
    septembre 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 197
    Points : 36
    Points
    36

    Par défaut

    Salut unparia

    Avec la meilleur volonté je ne trouve pas comment éviter cela Epure = Replace(x, "-", " ")
    Pourtant j'ai cherché mais bon si tu veut me le dire cela est bien sinon tempi

    Mais sa n’empêche pas de te souhaiter un bon WE

    Max

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 948
    Points : 5 076
    Points
    5 076

    Par défaut

    Avec la meilleur volonté je ne trouve pas comment éviter cela Epure = Replace(x, "-", " ")
    Ce qui veut dire que tu as copié/collé un code sans le comprendre (voire l'analyser).
    Lorsque je constate un tel état de fait, je sors (sans plus).
    Désolé.
    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.

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    2 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 2 743
    Points : 5 668
    Points
    5 668

    Par défaut

    Bonjour,

    Ah, unparia est taquin

    Tu n'as pas trop réfléchi je crois. Je te poste la réponse sans te dire où est la modif mais là, tu devrait trouver facilement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Const AccChars$ = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ- "
    Const RegChars$ = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
     
    Function Epure$(x$)
     
        Dim i%
     
        For i = 1 To Len(AccChars): x = Replace(x, Mid(AccChars, i, 1), Mid(RegChars, i, 1)): Next i
     
        Epure = x
     
    End Function

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 948
    Points : 5 076
    Points
    5 076

    Par défaut

    coucou Theze
    Corrige
    (le "-" dans l'un doit être un " " en regard dans l'autre. Ce n'est pas comme ce que j'ai suggéré avec un seul array. Lui, il en utilise deux).
    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.

  13. #13
    Nouveau membre du Club
    Inscrit en
    septembre 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 197
    Points : 36
    Points
    36

    Par défaut

    Bonjour Theze

    Je te remercie et je vais voir ton code simplifier par apport au mien.
    J'ai une question sur code qui fonctionne très bien sauf que sur une partie du code je lui demande de mettre des UnderSores sur les noms composé sur la cellule "D4" mais ne voudrais pas avoir des UnderSores sur la partie var url = new Array ( qui se trouve sur la même cellules "D4"

    Voila mon code:

    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
    Sub Copy()
    Dim Cel As Range
             Application.ScreenUpdating = False
           
           'Deuxième partie
         For Each Cel In Range("a6:a" & [a65000].End(xlUp).Row)
              Cells(3, "d") = Trim(Cells(3, "d")) & "','" & Cel
        Next Cel
            Cells(3, "d").Value = Mid(Cells(3, "d").Value, 2)
            Cells(3, "d").Value = "var txt = new Array ('" & Cells(3, "d").Value & "');"
           
         ' Deuxième partie avec Underscore
           'Deuxième partie
         For Each Cel In Range("a6:a" & [a65000].End(xlUp).Row)
       
                 Cells(4, "d") = Trim(Cells(4, "d")) & "','" & "Communes/" & Cel & ".html"
               
        Next Cel
            Cells(4, "d").Value = Mid(Cells(4, "d").Value, 2)
            Cells(4, "d").Value = "var url = new Array ('" & Cells(4, "d").Value & "');"
             [D4].Replace What:=" ", Replacement:="_"
    End Sub
    Je te remercie d'avance

    Max

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2016, 10h32
  2. Réponses: 5
    Dernier message: 19/09/2016, 15h05
  3. maitre and entre les noms des auteurs
    Par texformat dans le forum Bibliographies - Index - Glossaires
    Réponses: 6
    Dernier message: 23/02/2012, 15h25
  4. Tiret dans les noms de fonctions
    Par mrshapiro dans le forum Débuter
    Réponses: 8
    Dernier message: 23/12/2009, 14h15
  5. [XML] Accent dans les noms de balises
    Par virgul dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/03/2005, 13h42

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