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 sans passer par une formule


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut Supprimer les espaces sans passer par une formule
    Bonjour,

    Dans une de mes macros, je dois supprimer les espaces dans les cellules d'une de mes colonnes. J'ai essayé de taper directement ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Suppresp()
     
    With Sheets("Test")
     
            Dim LR2 As Long
            LR2 = .Cells(.Rows.Count, 1).End(xlUp).Row
     
            WorksheetFunction.Trim (.Range("C2:C" & LR2))
     
    End With
    End Sub
    J'ai également testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Suppresp()
     
    With Sheets("Test")
     
            Dim LR2 As Long
            LR2 = .Cells(.Rows.Count, 1).End(xlUp).Row
     
            .Range("C2:C" & LR2).Value = WorksheetFunction.Trim (.Range("C2:C" & LR2))
     
    End With
    End Sub
    Sans succès...

    Dans une autre de mes macros dans laquelle je dois faire la même chose, j'ai fait ceci, ce qui est efficace puisque ça marche (cela revient à faire la formule Excel classique, d'où mon titre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim LR2 As Long
            LR2 = .Range("A65536").End(xlUp).Row
     
            .Range("J2:J" & LR2).FormulaR1C1 = "=Trim(RC[-7])"
            .Range("J2:J" & LR2).Copy
            .Range("C2").PasteSpecial Paste:=xlPasteValues
            .Range("J2:J" & LR2).ClearContents
    Mais je souhaitrai savoir si un truc du genre ce que j'ai testé avec mes deux premiers bouts de code moisi peut fonctionner. Si oui, comment ? Est-ce que vous avez une solution SVP ? Ou vaut-il mieux que je garde mon dernier code qui marche ? Merci d'avance pour votre aide et réponse !

    Cordialement,

    Runsh
    Runsh

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    avec une boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Suppresp()
    Dim LR2 As Long, c As Range
     
    With Sheets("Test")
     
            LR2 = .Cells(.Rows.Count, 3).End(xlUp).Row
     
            For Each c In .Range("C2:C" & LR2)
              c.Value = Trim(c)
            Next c
     
    End With
    End Sub
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    par exemple comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Suppresp()
     
    Dim LR2 As Long 
     
    With Sheets("Test")
            for lr2 = 2 to .Cells(.Rows.Count, 1).End(xlUp).Row
              .Range("C" & lr2) = Trim(.Range("C" & lr2)
            next lr2
     
     End With
    End Sub
    mais il y certainement plus efficace
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Une autre possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("test").Columns(3).Replace What:=" ", Replacement:="", LookAt:=xlPart
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    Le code de fring fonctionne mais si dans la cellule il y a "MARTIN Louis" cela deviendra "MARTINLouis".
    J'avais compris qu'en utilisant "TRIM" il voulais enlever les espaces avant et après la chaîne de caractère
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    @rvtoulon
    J'avais compris qu'en utilisant "TRIM" il voulais enlever les espaces avant et après la chaîne de caractère
    Voici une fois de plus un problème posé de manière ambigüe.
    Seul Runsh63 sait ce qu'il en est, enfin ... je l'espère comme toi.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  7. #7
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut
    Bonjour à vous fring, Godzestla, rvtoulon, le forum,

    Tout d'abord merci à tous pour toutes vos réponses ! En fait, la solution proposée par fring fonctionnera dans mon cas car dans ma chaîne de caractères, j'ai 4 caractères puis des vides que je veux supprimer, donc pas de problème. En fait je voulais passer par trim car avant de faire ma macro, je faisais tout ce travail de datacrunshing manuellement, et plutôt que de faire rechercher / remplacer, je passais bêtement par la formule SUPPRESPACE, d'où, "transposition" dans la macro par trim.
    Quoiqu'il en soit toutes vos réponses me vont car un jour où l'autre j'aurai besoin des boucles que vous m'avez proposé, donc merci vous trois!

    Cordialement,

    Runsh
    Runsh

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/11/2008, 15h55
  2. Réponses: 5
    Dernier message: 10/05/2008, 18h11
  3. Background degradé sans passer par une image?
    Par j14z dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/03/2008, 15h02
  4. [RegEx] Supprimer les espaces au début d'une chaine de caractère
    Par PoichOU dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2008, 17h49
  5. changer les valeurs graphique sans passer par une cellule
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/11/2007, 19h56

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