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, les points, et GARDER les virgules !


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Supprimer les espaces, les points, et GARDER les virgules !
    Bonjour à tous,

    J'aimerai avec une macro, mettre des données dans un format correct.

    J'ai une liste brut de nombre du genre : " 7.698,800" avec plein d'espaces devant, un point séparateur de milliers, et une virgule. Je veux le transformer en "7698,8".

    Je veux pouvoir enlever tous les points et les espaces de cette liste, et garder les virgules. Seulement voilà, avec ma macro, ça supprime les points, les espaces et les virgules.

    Comment faire pour conserver les virgules ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'Suppression des "." dans la plage
    Sheets("Feuil1").Range("A1:A252").Replace What:=".", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    'Suppression des espaces dans la plage
    Sheets("Feuil1").Range("A1:A252").Replace What:=" ", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser le "Remplacer par" dans Excel ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Car je veux faire cela automatiquement, cette macro faisant parti d'une plus grosse macro de mise à jour, qui va chercher une liste brut, la colle dans le fichier principal, et la met au bon format.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Essaies ceci :

    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
    Re,
    
    essaies ceci :
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    12345678910
     
    Sheets (....).select 'remplacer les points par le nom de la feuille
        Columns("A:A").Select
          Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("A1").Select

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Ca fait toujours pareil,

    mon " 7.698,800" se transforme en "7698800" alors que je veux obtenir "7698,8".

    Pour info, c'est en remplaçant les points par rein du tout que mes virgules sont supprimées. A croire que le programme ne fait pas la différence entre point et virgule...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("Feuil1").Range("A1:A252").Replace What:=".", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=True

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Comment est ton format décimal sous Excel ? "." ou ","

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Les décimales sont des virgules "," et la moindre cellule avec un "." se met au format texte (aligné à gauche)

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Je viens de faire un test avec juste ce morceau de code et ça marche chez moi. Seuls les points sont remplacés par rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Columns("A:A").Select
        Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    .... Non cette macro me supprime les points ET les virgules chez moi.

    C'est sous Excel 2003 et les décimales sont des ",".

    Y a-il un autre moyen de faire ça ?

    Merci pour ta patience en tout cas.

    J'ai joint le classeur en question avec la liste brut de données collée en colonne A. Ta macro marche-elle avec cette liste ? (chez moi non)
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Replace " ", ""
    Range("A1").Replace ".", " "

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par dolin007 Voir le message
    Ca fait toujours pareil,

    mon " 7.698,800" se transforme en "7698800" alors que je veux obtenir "7698,8".
    Par exemple, pour la colonne G, doit être exécuter APRES avoir entrer les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Columns("G:G").NumberFormat = "0.###"
    A+

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Points : 117
    Points
    117
    Par défaut
    Bonjour

    Avec une autre approche

    Si les valeurs sont dans une colonne d'une feuille l'option "convertir" du menu données permet de faire l'opération sans problème.
    A l'étape 3 de l'assistant le bouton avancé permet de définir les séparateurs.
    Destination permet d'indiquer la nouvelle cellule.

    JP014

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    J'ai tester sur ton classeur et ça va pas mais je pense avoir trouver une solution (du moins chez moi ça fonctionne).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ChangerFormat()
    Dim V As Double
    Dim i As Long
        For i = 1 To 50
            V = Cells(i, 1)
            Cells(i, 1) = V
        Next i
    End Sub
    A+

  14. #14
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour LeForestier,

    J'ai testé ce code dans son classeur mais cela ne fonctionne pas.
    Incompatibilité de type '13'

    J'ai testé plusieurs codes trouvés sur des forums mais sans résultat.

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    Bonjour LeForestier,

    J'ai testé ce code dans son classeur mais cela ne fonctionne pas.
    Incompatibilité de type '13'

    J'ai testé plusieurs codes trouvés sur des forums mais sans résultat.
    bonjour NEC14,
    Tu a quel version d'excel ? parce que chez moi c'est nickel.
    Et je n'ai pas en tête le libellé de l'erreur 13, c'est quoi ?
    A+
    PS: c'est sur son classeur que j'ai tester.
    Peut-être en ajoutant..

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Avec ton code fonctionne, mais ça ne fait pas ce que je veux.

    Ca remplace les points par des virgules, et supprime les anciennes décimales ainsi que les anciennes virgules.

    Exemple :

    " 6.030,800" ----------> "6,03"

    Alors que je veux obtenir un "6 030,8"

  17. #17
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Si tu as essayé mon dernier post (que j'ai testé)

    essayes ceci (aussi testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 1).Value = CDbl(Replace(Cells(i, 1).Value, ".", " "))
    remplace le point avec un espace

  18. #18
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Pourtant, avec TON classeur et MA macro...
    A+
    Edit : C'est pour l'image que j'ai mis en colonne B, mais ça fonctionne Idem sur la colonne A
    Images attachées Images attachées  

  19. #19
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour tous le forum une autre methode supprime les espaces indesirables plus change le point par un espace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub es()
    Dim c As Variant
     Application.ScreenUpdating = False
      For Each c In Range("a1", Range("a65536").End(xlUp))
         If c Like "*.*" And c Like "*,*" Then c.Value = Trim(Replace(c.Value, ".", " "))
       Next c
    End Sub
    eventuellement par formule exemple en b1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUBSTITUE(SUBSTITUE(SUPPRESPACE(A1);(CAR(160));"");(".");" ")

    Louis j'ai teste ton code avec val ou sans val j'ai erreur 13 j'ai essaye de changer la variable idem je comprends pas pourquoi??? comme nec14 a+ test sous excel2003

  20. #20
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour Leti,
    Je me demande si c'est pas une question de références.. j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Visual Basic for Application
        Microsoft Excel 9.0 object Librairy
        Ole Automation   'Rien à voir mais..
        Microsoft Office 9.0 object Librairy
        Microsoft Form 2.0 object Librairy
    Sinon, c'est quand même bizarre.
    A+
    Edit:
    C'est d'autant plus bizarre que j'ai testé sur 2000 et 2007 Résultats identiques.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. garder les espace avec read
    Par gaaara dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 19/04/2014, 01h30
  2. Interdire les espaces (et caractères spéciaux) dans les fichiers
    Par Benoit.RTPW dans le forum Administration système
    Réponses: 4
    Dernier message: 19/05/2009, 10h00
  3. Les filtre ADO n'aime pas les espaces
    Par antoinelac dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/01/2009, 16h15
  4. Réponses: 6
    Dernier message: 03/05/2006, 12h01
  5. [XSD] : Garder les espaces dans un champ string
    Par cvacavant dans le forum Valider
    Réponses: 8
    Dernier message: 10/02/2006, 10h28

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