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 :

VBA : Remplacer les tabulations par des espaces [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 58
    Points
    58
    Par défaut VBA : Remplacer les tabulations par des espaces
    Bonjour à tous,

    Quand j'ouvre certains fichiers CSV sous Excel, ces derniers comportent des tabulations. Ces tabulations ne sont pas des séparateurs, il s'agit d'une "mauvaise manipulation" de la part du créateur du fichier.

    J'ai vu, en parcourant des sujets similaires que le chr(9) correspondait à une tabulation et je voulais m'assurer que c'était universel.

    Du coup, avec le code suivant, je pourrai transformer toutes les tabulations de la colonne 1 par des espaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Columns(1).Replace Chr(9), " "
    Si le chr(9) ne correspond pas à la tabulation... Existe-il un moyen de remplacer ces tabulations par des espaces ?

    Merci par avance de vos retours !

  2. #2
    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,
    la constante vbtab (au demeurant = chr(9)), est le caractère de tabulation
    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.

  3. #3
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    Oui, c'est possible.

    Tu peux utiliser Notepad++ pour remplacer un caractére par un autre (Raccourci : Ctrl + H)
    rechercher la tabulation, tu peux la Copier/coller puis la mettre dans la zone de recherche de Ctrl + H

    D'autres façons de faire existent aussi.

  4. #4
    Membre du Club
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour,
    la constante vbtab (au demeurant = chr(9)), est le caractère de tabulation
    Super, merci pour la confirmation !


    Citation Envoyé par Stanler Voir le message
    Bonjour,

    Oui, c'est possible.

    Tu peux utiliser Notepad++ pour remplacer un caractére par un autre (Raccourci : Ctrl + H)
    rechercher la tabulation, tu peux la Copier/coller puis la mettre dans la zone de recherche de Ctrl + H

    D'autres façons de faire existent aussi.
    Merci beaucoup, mais l'objectif est de rester sous Excel



    Edit : Après vérifications, les tabulations s'en vont bien ! Mais je viens de m’apercevoir que je peux avoir 2, 3 ou x espaces consécutifs que ne sont alors pas remplacés par mon code actuel.
    J'ai pensé à faire tous les cas possibles, mais il y a sûrement plus rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("Feuil1").Columns(1).Replace "  ", " " 'Pour 2 espaces consécutifs
    Sheets("Feuil1").Columns(1).Replace "   ", " " 'Pour 3 espaces consécutifs
    Sheets("Feuil1").Columns(1).Replace "    ", " " 'Pour 4 espaces consécutifs et ainsi de suite...
    Existe-il une formulation pour dire "si il y a 2 espaces consécutifs ou plus, remplacés tout ça par un seul espace" ?

    Merci par avance

  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
    Sers-toi alors en plus de la méthode WorkSheetFunction.trim ...
    Regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto = "aaa" & Chr(9) & Chr(9) & "bbb"
    MsgBox toto
    toto = WorksheetFunction.Trim(Replace(toto, vbTab, " "))
    MsgBox toto
    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 du Club
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    Ah ouais ! ça marche nikel
    Un très grand merci !

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

Discussions similaires

  1. [CR 2008] remplacer les 'crlf' par des espaces dans un texte de "type" RTF
    Par digitfree dans le forum Formules
    Réponses: 5
    Dernier message: 02/04/2013, 11h18
  2. Remplacer les tabulations par des espaces
    Par Henry22 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/05/2012, 09h08
  3. [DOM] Remplacer les <br> par des espaces
    Par Sammuel dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/12/2009, 15h16
  4. remplacer les virgules par des tabulations
    Par cartographe dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 08/11/2007, 11h27
  5. Comment remplacer les tabulations par des espaces ?
    Par richarno dans le forum Langage
    Réponses: 7
    Dernier message: 25/10/2007, 13h05

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