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 :

Supprimer accents et tirets entre les noms


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Points : 47
    Points
    47
    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
    Invité
    Invité(e)
    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
    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
    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 .

    ****** : 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.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    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 : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    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 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 .

    ****** : 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.

  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
    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 .

    ****** : 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.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Points : 47
    Points
    47
    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
    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
    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 .

    ****** : 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.

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Points : 47
    Points
    47
    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
    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
    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 .

    ****** : 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.

  11. #11
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    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
    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
    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 .

    ****** : 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.

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Points : 47
    Points
    47
    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