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 :

Effacer les espaces de fin d'une colonne (RTRIM?) [XL-MAC 2011]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2017
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 79
    Par défaut Effacer les espaces de fin d'une colonne (RTRIM?)
    Bonjour

    Sur toute une colonne définie par (avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = Cells(Rows.Count, 1).End(xlUp).Row
    ), je souhaite effacer les espaces en fin de cellule (en conservant ceux en milieu de cellule).
    J'ai essayer de manipuler RTRIM, mais je n'ai pas compris son fonctionnement.

    Quelqu'un peut-il m'aider svp?

    Merci par avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour,

    Une solution avec quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim C as range
    for each C in Range("A4:A"&L) 
         C=rtrim(C)
    next

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    RTrim ne peut traiter qu'une valeur à la fois.
    Tu ne peux donc pas l'utiliser sur une zone de plusieurs cellules.

    Il faudra faire une boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim CC As Range
    For Each CC In Range("A4", Cells(Rows.Count, 1).End(xlUp)).Cells
        CC.Value = RTrim(CC.Value)
    Next CC
    EDIT : Grillé de quelques minutes par Algoplus.

  4. #4
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour buigui,

    question : tes données contiennent - elles des espaces avant et/ou plusieurs espaces entre les mots à conserver ou pas ??
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour le Fil, Ryu Jacques, Menhir,

    Dérivé du code de Menhir, pour le "ou pas", dès le début de ce fil, nos pensées convergerait-elles vers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim CC As Range
    For Each CC In Range("A4", Cells(Rows.Count, 1).End(xlUp)).Cells
        CC.Value = Trim(CC.Value)
    Next CC

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Patrice,

    Pas vraiment convergentes (les pensées). Celle de Ryu (mais uniquement si "ou pas") utiliserait selon ce que je devine worksheetfunction. une fonction Excel
    Mais il faut attendre pour cela la réponse du demandeur.

    EDIT : correction d'un terme
    + et je viens d'essayer (si "ou pas") -->> 4 lignes de code extrêmement courtes et toute la plage est traitée sans boucle et à la vitesse grand V (mais uniquement valable si "ou pas").
    La réponse du demandeur à ce propos (du "ou pas") est donc très importante.

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Coucou Jacques ,

    c'est ce à quoi je pensais exactement (et en effet sans boucle , via une petit Evaluate),
    mais comme si bien dit sans réponse du demandeur …

    Edit : j'avais utilisé un code sur un des posts à jpvba qui lui utilisé une plage discontinue (plage avec Union), il fallait alors traiter le cas par via une boucle par Areas
    mais dans le cas d'une plage contiguë pas besoin de boucle
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Salut Ryu
    Même pas besoin d'Evaluate. ...
    Ouvre ta messagerie dans 5 minutes (le temps de rédiger).

  9. #9
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour ,
    Citation Envoyé par buigui Voir le message
    je souhaite effacer les espaces en fin de cellule (en conservant ceux en milieu de cellule).
    Citation Envoyé par RyuAutodidacte
    question : tes données contiennent - elles des espaces avant et/ou plusieurs espaces entre les mots à conserver ou pas ??
    Tu devrais avoir la réponse à ta question ;-)
    Cordialement

  10. #10
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Hi anasecu,
    Citation Envoyé par anasecu Voir le message
    Bonjour ,

    Tu devrais avoir la réponse à ta question ;-)
    Cordialement
    Si je pose la question c’est que j’ai sûrement des raisons …
    Sinon oui le s 2 codes ci-dessus font le travail …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Ryu, que je salue et dont je devine bien à quoi il pense, a écrit :
    Si je pose la question c’est que j’ai sûrement des raisons
    Et les dites raisons ressortent de ce qu'il a écrit plus haut :
    ou plusieurs espaces entre les mots à conserver ou pas
    Pour ceux que ce message intriguerait :
    Car, selon la réponse reçue, il y a une manière de traiter la plage entière sans aucune boucle.

  12. #12
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    "Ou pas " sur une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
      Range("A4", Cells(Rows.Count, 1).End(xlUp)).Value = Application.Transpose(Split(Application.Trim(Join(Application.Transpose(Range("A4", Cells(Rows.Count, 1).End(xlUp)).Value), Chr(1))), Chr(1)))
    End Sub

  13. #13
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Patrice,

    En fait il y bcp plus simple … , (relis bien ce que Jacques a écrit), mais la réponse dépendra de buigui qui confirmera ou non du contexte exact de ses données
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  14. #14
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2017
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 79
    Par défaut
    Bonjour

    Merci pour vos réponses.
    J'ai oublié de préciser que je ne souhaitais de boucle en aucun cas, la tableau est lourd (plus de 10.000 lignes avec formules dans tous les sens) et j'ai déjà ré-écrit toutes mes macros pour remplacer les boucles là où il y en avait.

    J'ai donc testé le code de Patrice740 ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
      Range("A4", Cells(Rows.Count, 1).End(xlUp)).Value = Application.Transpose(Split(Application.Trim(Join(Application.Transpose(Range("A4", Cells(Rows.Count, 1).End(xlUp)).Value), Chr(1))), Chr(1)))
    End Sub
    Un message d'erreur apparaît: "erreur d'exécution "5": argument ou appel de procédure incorrect".
    Je joins une version raccourcie de la colonne sur laquelle je souhaite que s'applique la macro.
    Fichiers attachés Fichiers attachés

  15. #15
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour buigui, anasecu,

    @buigui tu ne m’as pas répondu à ma question exactement en post #4, hormis que l’on apprend des détails supplémentaires … et qui ont leur importance …

    J'ai oublié de préciser que je ne souhaitais de boucle en aucun cas, la tableau est lourd (plus de 10.000 lignes avec formules dans tous les sens)
    @anasecu : de manière générale dans les discussions, on s’aperçoit au fil des posts que tout n’avait pas été dit et que certaines précisions (aussi petites soient-elles), venaient à manquer …
    Soit pcq les personnes faisant leurs posts pensent être assez claire,
    soit par manque de connaissance ou mauvaise compréhension sur certaines fonctions ou autres …
    C’est ainsi que l’on passe plus de temps à coder puis recoder quand le sujet n’a pas été donné clairement c’est-à-dire avec les tenants les aboutissants et le but, bien sûre dans le détail

    Edit : enrichissement de texte Bold
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    si il n'y a pas d'ambiguité sur le fait qu'il ne doit pas y avoir plusieurs espaces entre les mot
    Application.trim en ayant mis bout a bout toute les cells
    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

  17. #17
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2017
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 79
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Bonjour buigui, anasecu,

    @buigui tu ne m’as pas répondu à ma question exactement en post #4, hormis que l’on apprend des détails supplémentaires … et qui ont leur importance …
    Il peut y avoir:
    - des cases ne contenant que des espaces
    - entre les mots il n'y aura pas plus d'un espace
    - en fin de cellule il peut y avoir plusieurs espaces consécutifs.

    Je peux remplacer tous les espaces doubles par des espaces simples (avec la fonction replace) si cela peut aider.

  18. #18
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour à tous,

    Je ne vois vraiment pas la réponse que vous attendez de buigui car sa demande est on ne peut plus claire
    Citation Envoyé par buigui Voir le message
    je souhaite effacer les espaces en fin de cellule (en conservant ceux en milieu de cellule).

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

Discussions similaires

  1. Effacer les espaces de début et fin d'un textarea
    Par wiwizz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 16/11/2011, 14h16
  2. Réponses: 0
    Dernier message: 27/04/2010, 17h32
  3. Réponses: 3
    Dernier message: 19/08/2009, 18h25
  4. Retirer les espaces à la fin d'une chaine de caracteres
    Par laurentdepibrac dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/06/2009, 14h39
  5. Effacer les espaces dans une chaîne de caractères
    Par JohnnyWalk dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 19/07/2007, 14h13

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