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 :

Encore une histoire pour remplacer les points


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    février 2007
    Messages
    305
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : février 2007
    Messages : 305
    Points : 140
    Points
    140
    Par défaut Encore une histoire pour remplacer les points
    Hello,

    Dans une colonne j’ai une suite de nombre, dont le séparateur de millier est le point, et le séparateur de décimal la virgule.

    Il y a 2 catégories de nombres :
    - nombres avec 2 chiffres après la virgule
    - nombres avec 3 chiffres après la virgule


    Mon objectif est de supprimer les points des séparateurs de millier.

    Pour les nombres a 2 chiffres après la virgules : no problème

    Pour les nombres a 3 chiffres après la virgules : la macro me supprime les points ET le séparateur de décimal qui je le rappelle est une virgule, par un espace, n’est ce pas bizarre ?
    Ex : 100.253,52 deviens 100 253 52 (je précise qu'il sagit de l'espace de séparateur de milier et non, un reel espace entre les nombres, c'est a dire que dans ma cellule il est écrit 100 253 52, mais si je me place dessus, dans la barre en haut il est écrit 10025352)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Range("F:F").Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Merci pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Normalement dans la colonne tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("F:F").FormatNumber = 000 000,000
    Dis moi si ca marche
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  3. #3
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    février 2007
    Messages
    305
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : février 2007
    Messages : 305
    Points : 140
    Points
    140
    Par défaut
    le format de ton nombre n'est pas reconnu j'ai un message d'erreur

    et sinon, est ce sensé me supprimer les points ??

    merci

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : mai 2005
    Messages : 4 235
    Points : 24 312
    Points
    24 312
    Par défaut
    Citation Envoyé par Djohn
    Dans une colonne j’ai une suite de nombre, dont le séparateur de millier est le point, et le séparateur de décimal la virgule.
    Citation Envoyé par Djohn
    la macro me supprime les points ET le séparateur de millier qui je le rappelle est une virgule,
    Elle n'est pas un peu incohérente, ton explication?

    La toute première question à se poser, avant toute manipulation,est de savoir si Excel interprète le contenu des cellules comme des nombres ou comme du texte.

    Autrement dit, si aucun alignement n'est forcé (Alignement horizontal: Standard), les nombres sont-ils à gauche ou à droite?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    février 2007
    Messages
    305
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : février 2007
    Messages : 305
    Points : 140
    Points
    140
    Par défaut
    effectivement j'ai buggé dans mon explication,

    il fallait comprendre :

    la macro me supprime les points ET le séparateur de décimal qui je le rappelle est une virgule,


    Autrement vous pouvez faire le test par vous meme, ce probleme s'applique sur toutes les versions d'Excel apparement.

    Pour répondre a ta question, il y a un alignement a droite, ce sont donc des nombres.

    Merci

  6. #6
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    février 2007
    Messages
    305
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : février 2007
    Messages : 305
    Points : 140
    Points
    140
    Par défaut
    je m'apporte une réponse qui fonctionne mais longue, si quelqu'un a quelque chose de plus court et moins lourd ca serai cool

    merci

    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
            Dim wak As Range
            Set wak = Range("f1")
            For Each wak In Range("f1:f150") 'on recherche dans une large plage de cellule
     
     
            a = Left(Right(wak, 4), 1) 'récupération de la vigule en 4 emme place a gauche, si elle existe
            If a = "," Then
            wak.Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
           wak = wak / 1000
     
           Else
           wak.Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            End If
     
            Next

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : mai 2005
    Messages : 4 235
    Points : 24 312
    Points
    24 312
    Par défaut
    Citation Envoyé par Djohn
    Pour les nombres a 2 chiffres après la virgules : no problème

    Pour les nombres a 3 chiffres après la virgules : la macro me supprime les points ET le séparateur de décimal qui je le rappelle est une virgule, par un espace, n’est ce pas bizarre ?
    Ex : 100.253,52 deviens 100 253 52 (je précise qu'il sagit de l'espace de séparateur de milier et non, un reel espace entre les nombres, c'est a dire que dans ma cellule il est écrit 100 253 52, mais si je me place dessus, dans la barre en haut il est écrit 10025352)
    La prochaine fois, donne un exemple qui correspond à la description...

    Citation Envoyé par Djohn
    Pour répondre a ta question, il y a un alignement a droite, ce sont donc des nombres.
    Il ne faut jamais essayer de modifier la mise en forme faite par Excel en manipulant les données.

    Dans les cas dont tu parles, il aurait fallu modifier les paramètres régionaux pour mettre un espace à la place du point.

    Je viens de faire un essai.
    Si les paramètres régionaux sont avec un point pour séparateur de millier, il est possible de forcer un espace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim wak As Range
    For Each wak In Range("f1:f150") 'on recherche dans une large plage de cellule
      wak.NumberFormat = "### ### ##0.0##"
    Next
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. algorithme pour relier les points d'une constellation
    Par Tex-Twil dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 11/12/2010, 18h04
  2. Réponses: 1
    Dernier message: 04/02/2010, 12h45
  3. Réponses: 4
    Dernier message: 21/10/2009, 11h17
  4. Y a-t-il encore une place pour les informaticiens seniors ?
    Par danielhagnoul dans le forum Emploi
    Réponses: 9
    Dernier message: 10/06/2009, 16h36
  5. Souci pour remplacer les Retours chariot par <BR>
    Par ahage4x4 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/06/2005, 12h24

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