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 plusieurs espaces à la suite


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut Supprimer plusieurs espaces à la suite
    Bonjour,
    J'ai une macro qui fait plusieurs traitements sur des cellules d'une feuille Excel.
    J'enlève les espaces en début et fin avec la fonction Trim.

    J'aimerai également enlever les espaces à l'intérieur de la chaîne de caractères lorsqu'il y en a plusieurs qui se suivent.
    Comment faire? Existe-t-il une fonction pour ça?
    Je ne sais pas combien d'espaces se suivent, c'est aléatoire.

    D'avance merci de vos réponses.

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour neGo, bonjour le forum,

    Pas très académique j'utilise la fonction remplacer. Je remplace "deux espaces" par "un espace" jusqu'à ce qu'Excel me dise qu'il ne trouve plus...

  3. #3
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour neGo33,

    Voilà une proc qui fait la manip sur le range [B2:B10] de la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub supp_dbl_space()
        Dim rg As Range, c As Range
            Set rg = ActiveSheet.[B2:B10]
            For Each c In rg
                While InStr(c.Value, "  ") > 0
                    c = Replace(c.Value, "  ", " ")
                Wend
            Next
    End Sub
    Si ta plage est très grande, parcourir toutes les cellules peut être très lourd pour Excel.

    Voilà une méthode moins couteuse toujours avec le même principe, temps qu'il y a des doubles espaces je les remplace par des simples.

    Foncions pour enlever les doubles espaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function supprimer_double_espace(texte As Variant) As String
        While InStr(texte, "  ") > 0
            texte = Replace(texte, "  ", " ")
        Wend
        supprimer_double_espace = texte
    End Function
    Boucle sur toutes les cellules en passant par un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub supp_dbl_space_by_tab()
        Dim rg As Range, c As Range, t(), nb_l&, nb_c&, i&, j&
            Set rg = ActiveSheet.[B2].CurrentRegion
                nb_l = rg.Rows.Count
                nb_c = rg.Columns.Count
            t() = rg
            For i = 1 To nb_l
                For j = 1 To nb_c
                    t(i, j) = supprimer_double_espace(t(i, j))
                Next j
            Next i
            rg = t()
            Set rg = Nothing
    End Sub

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    L'efficience - et donc le moins coûteux - est d'utiliser le B-A-BA d'Excel : la fonction de feuille de calculs SUPPRESPACE,

    Application.Trim en VBA, en une unique instruction !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Demo()
        MsgBox Application.Trim("  Penser   Excel   avant   du   pur   VB   est   bien   plus   efficace   !   ")
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

Discussions similaires

  1. Supprimer plusieurs lignes à la suite
    Par parpagnas dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/06/2013, 14h04
  2. [Débutant] supprimer plusieurs espaces en une seule
    Par djdidi2010 dans le forum C#
    Réponses: 5
    Dernier message: 11/02/2013, 00h49
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. [nouveau] saisir plusieurs espace de suite ou tabuler
    Par siuol dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 28/02/2005, 12h32
  5. Supprimer plusieurs lignes d'un DBGrid via Popupmenu?
    Par BVK dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/12/2004, 11h27

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