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 :

Mise en forme des nombres d'un fichier csv quand le symbole décimal est la virgule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    technicien
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 51
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Mise en forme des nombres d'un fichier csv quand le symbole décimal est la virgule
    Bonjour à tous,

    Voici mon problème du jour :

    Dans une macro excel, je suis amenée à traiter des données numériques issues de fichiers.csv.
    Dans le fichier csv, les données numériques sont au format texte avec pour symbole numérique le point.
    Or le pc qui utilise la macro est configuré avec pour symbole décimal la virgule donc ... conflit.

    Dans excel, si je remplace les points par des virgules, tout ce passe bien.
    Par contre si je code ça en VBA voici le résultat :
    - pour les nombres < à 1, les points sont bien remplacés pas des virgules, mais la cellule est en format texte
    - pour les nombres > à 1, les points sont remplacés par des séparateurs de milliers. Les cellules sont bien en format nombre mais les valeurs sont multipliées par 1000.
    (voir image)
    Nom : virgule.JPG
Affichages : 618
Taille : 26,1 Ko

    Si quelqu'un a une idée pour solutionner mon problème, je suis preneuse.

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans Excel le valeur décimale est la virgule.
    dans vba la valeur décimale est le point!

    quant tu importe ton fichier Csv (Texte) Excel voie le point comme du texte et l'affiche à gauche; quand tu remplace le point par une virgule dans vba (qui lui le voie comme du texte) il place la valeur avec virgule à gauche!

    imaginons que tu as la colonne [A:B] en numérique, là pas la peine de remplacer ton point par une virgule!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("A:B").NumberFormat = "General"
    range("A:B").value=range("A:B").value

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    répondre après dysorthographie c'est un aventure pour un débutant et nul en VBA comme moi
    mais pour moi je bricole ce code pour remplacer le point par virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub mamacro()
    Dim DernLigne As Long
    DernLigne = Range("C" & Rows.Count).End(xlUp).Row
     Columns("c:c").Select ' ici la plage à mettre en forme
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    For i = 1 To DernLigne
    Range("c" & i).Value = CDbl(Range("c" & i).Value)
    Range("c" & i).NumberFormat = "#,##0.000" ' trois chiffre après virgule
    Next i
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  4. #4
    Membre à l'essai
    Femme Profil pro
    technicien
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 51
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Merci à tous les 2.

    Pour le moment j'ai testé la solution de dysorthographie et ça fonctionne.
    Je suis juste obligée de le faire cellule par cellule car par plage de colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Nomfich2).Sheets(NomFeuil2).Range("A:" & M22).Value = Workbooks(Nomfich2).Sheets(NomFeuil2).Range("A:" & M22).Value
    , ça bug.

  5. #5
    Membre à l'essai
    Femme Profil pro
    technicien
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 51
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Nomfich2).Sheets(NomFeuil2).Range("A2:" & M22 & N2).Value = Workbooks(Nomfich2).Sheets(NomFeuil2).Range("A2:" & M22 & N2).Value
    Sur une plage de données ça marche ... :-) :-) :-)

    Merci encore à vous d'avoir pris le temps de me répondre.
    Bonne journée

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Nomfich2).Sheets(NomFeuil2).Range("A:A,M:N").Value = Workbooks(Nomfich2).Sheets(NomFeuil2).Range("A:A,M:N").Value

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2016, 16h37
  2. Mise en forme des fichiers générés par la macro
    Par soflab31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2015, 12h11
  3. Mise en forme des nombres
    Par helpcomm dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/10/2011, 21h41
  4. [ACCESS-EXCEL] Mise en forme des tableaux
    Par mpascolo dans le forum Access
    Réponses: 4
    Dernier message: 20/10/2005, 16h03
  5. [CR9] lenteur mise en forme des couleurs dans expert diagram
    Par cdu dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 20/04/2005, 08h48

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