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 les espaces simples avec une règle [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut Supprimer les espaces simples avec une règle
    Bonsoir le forum,

    J'ai un grand nombre de lignes où des noms de société sont écrits sur le modèle suivant: "S A R L DUPONT", et je cherche un moyen de supprimer les espaces entre les lettres uniques pour obtenir "SARL DUPONT", et j'avoue que je ne sais pas quelle fonction utiliser...

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil3").UsedRange.Replace "S A R L", "SARL"

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Argh, j'aurais dû mieux m'expliquer et ne pas dire modèle, pardon. Malheureusement, il n'y a pas que le cas SARL. J'ai beaucoup de noms de société où les personnes qui ont saisi les noms au départ ont glissé des espaces (par exemple "A F P" ou "A B C D").

    En fait, je cherche à supprimer les espaces simples entre les caractères uniques de ma chaîne. Je ne peux pas simplement supprimer tous les espaces car dans le cas de ma "S A R L DUPONT", si je supprime tous les espaces, je me retrouve avec "SARLDUPONT"...

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu peux essayer cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function fPurge(ByVal sBrut As String) As String
    Dim i As Integer, b As Boolean
     
    fPurge = Trim$(sBrut)
     
    For i = Len(fPurge) To 2 Step -1
        If b Then
            If (Mid$(fPurge, i, 1) <> " ") And (Mid$(fPurge, i - 1, 1) = " ") Then fPurge = Mid$(fPurge, 1, i - 2) & Mid$(fPurge, i)
        Else
            b = (Mid$(fPurge, i, 1) = " ")
        End If
    Next i
     
    End Function
    Testé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    MsgBox fPurge("S A R L DUPONT")
    End Sub
    Et cela renvoie "SARL DUPONT".

    Cordialement,

    PGZ

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Merci. Je tâche de comprendre la fonction, mais malheureusement, elle ne fonctionne pas avec des chaînes comme "A B C D". Le résultat donne "ABC D"...

    Et je suis peut-être pas doué, mais quand je cherche "Trim$" dans l'aide, je ne trouve de résultat que pour Trim. Tu pourrais m'expliquer la différence?

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    De nombreuses fonctions de chaînes ont deux variantes, par exemple Left et Left$. La version sans "$" renvoie un variant, la versions avec "$" renvoie une chaîne de caratères et s'exécute plus rapidement.

    Pour le code, tu soulèves le pb génériques de la difficulté de spécifier et d'établir un jeu de test.

    Cette version corrige le point que tu précises, mais tu vas peut-être exprimer de nouveaux besoins...

    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
    Function fPurge(ByVal sBrut As String) As String
    Dim i As Integer, b As Boolean
     
    fPurge = " " & Trim$(sBrut) & " "
     
    For i = Len(fPurge) To 2 Step -1
        If b Then
            If (Mid$(fPurge, i, 1) <> " ") And (Mid$(fPurge, i - 1, 1) = " ") Then
                fPurge = Mid$(fPurge, 1, i - 2) & Mid$(fPurge, i)
                i = i - 1
                b = True
            Else
                b = (Mid$(fPurge, i, 1) = " ")
            End If
        Else
            b = (Mid$(fPurge, i, 1) = " ")
        End If
    Next i
     
    fPurge = Trim$(fPurge)
     
    End Function
    Cordialement,

    PGZ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2007] Copier les pièces jointes avec une règle
    Par Franck.H dans le forum Outlook
    Réponses: 1
    Dernier message: 23/09/2013, 18h31
  2. [Free Pascal] Programme qui supprime les espaces inutiles dans une chaîne
    Par joreveur dans le forum Free Pascal
    Réponses: 18
    Dernier message: 24/08/2012, 16h51
  3. Supprimer les espaces consécutifs dans une chaîne
    Par aymenet1 dans le forum Pascal
    Réponses: 12
    Dernier message: 27/11/2007, 22h21
  4. Supprimer les éléments sélectionnés avec une case à cocher
    Par keishah dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/08/2007, 15h38
  5. Réponses: 3
    Dernier message: 26/03/2007, 09h46

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