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 :

sortir directement en décimale avec points au lieu des virgules pour une conversion en csv ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Points : 52
    Points
    52
    Par défaut sortir directement en décimale avec points au lieu des virgules pour une conversion en csv ?
    Bonjour
    je deviens fou avec ce truc.

    J'ai créé un code qui me donne des prix, au format 3,43 par exemple.
    comme je dois le sortir en csv avec un "." pour la décimal pour l'importer dans la magasin, je dois le convertir au format point.
    Mais ça ne marche pas !!
    Pourquoi ?
    on va chercher le prix ds la colonne 168 de ws1 et le reporter après muiltiplication par un coeff ds ws2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             'Colonne C=3 "Price"
             ws2.Cells(j, 3) = ws1.Cells(i, 168) * 0.95
             ws2.Cells(j, 3).NumberFormat = "0.00"
    de base la cellule (i,168) est au format excel avec une virgule; ex 3,45
    et je ne peux pas la changer ds excel, j'ai besoin de garder le format général des décimales avec "," pour les autres valeurs à décimales
    je veux donc juste que la cellule résultante passe en format "." et que je puisse ensuite convertir mon fichier .xlsm en .csv avec ce séparateur de décimal

    où est l'erreur ?

    D'ailleurs y a t il une manière de sortir directement le fichier en csv avec le codage suivant:
    Décimale "."
    Format UTF8
    Séparateur des données ","
    ?
    Merci de vos lumières

  2. #2
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    Pour ce qui de sauver le fichier en utf8 séparateur ","
    Patrice740 vous a fournis un code fonctionnel dans cette discution

    https://www.developpez.net/forums/d2...ier-excel-csv/

    Pour ce qui est des décimale "," vers "." , vous pourriez imaginer une feuille temporaire avec un copier coller de votre source {valeur uniquement, histoire de ne pas prendre d'éventuel formules) , vous y faite vos modifications de format, puis export vers csv avec la fonction de Patrice, et finalement suppression de la feuille.

    Bav
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  3. #3
    Membre du Club Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Points : 52
    Points
    52
    Par défaut
    Bonsoir
    c'est pas un peu compliqué ?
    et si j'enregistrais directement au format csv, je pourrais peut être mieux maîtriser les "." ?

  4. #4
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    Je ne crois pas en gros, pour moi, quand vous sauver une feuille au format csv, excel exporte les cellules comme si c'était du texte, en conservant la mise en forme de la cellule.

    Par exemple, sur la feuille Excel contient une colonne au format date dd/mm/aaaa, le csv aura la même date mais au format texte soit "dd/mm/jjjj".

    Il en va de même pour vos nombres décimaux.

    Une autre solution serait peut-être aussi, sans passer par une feuille temporaire, modifier votre séparateur décimal, enregistrer le csv, remettre le format décimal d'origine ?

    Ce ne sont que des idées, peut-être qq'un d'autre sur ce forum, pourra mieux vous venir en aide.

    Bav
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  5. #5
    Membre du Club Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Points : 52
    Points
    52
    Par défaut
    Merci de l'essai
    surtout que de base, je crée ce fichier en vBa et j'avais paramétré comme ça mais sans succès:
    Dans la boucle sur i

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            'Colonne O = 5 "price"
                ws2.Cells(j, 15) = ws1.Cells(i, 168) * 0.95
                ws2.Cells(j, 15).NumberFormat = "0.00"
    puis je reprends toute la colonne pour la conserver d'un coup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Columns("C:C").Select
        Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _[ATTACH=CONFIG]557585[/ATTACH]
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    et bien j'obtiens ça:
    Nom : Screenshot_15.jpg
Affichages : 998
Taille : 36,0 Ko

    Donc rien de bon.

    Je remplace ensuite à la main (rechercher/remplacer) pour la colonne le "," par un "." et j'obtiens bien ça
    Nom : Screenshot_16.jpg
Affichages : 992
Taille : 27,6 Ko

    Que je convertis ensuite en csv (via covertio l'occurrence) et là je perds tous mes "." qui redeviennent des ",":
    Nom : Screenshot_17.jpg
Affichages : 1022
Taille : 73,4 Ko

    ça semble bien bon et pourtant en cliquant ok j'obtiens bien ça, toujours des virgules..
    Je veux des points ! ou est l'erreur ?

    Sur un autre essai, j'ai obtenu ça à l'affichage d'ouverture de calc:
    Nom : Screenshot_18.jpg
Affichages : 1031
Taille : 78,5 Ko

    ça semble bon, hein ?
    et bien quand on clique sur ok, le résultat c'est ça:
    Nom : Screenshot_19.jpg
Affichages : 1009
Taille : 43,0 Ko

    alors que la visualisation de OOCalc était bien avec des points !
    je n'y comprends plus rien




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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par Polygos Voir le message
    Bonsoir
    c'est pas un peu compliqué ?
    et si j'enregistrais directemet au format csv, je pourrais peut être mieux maitriser les "." ?
    Non c'est pas compliqué, c'est une procédure standard qu'il suffit d'appeler.
    De plus ça semble compliqué mais on pourrait éliminer la moitié du code si tu répondais aux questions.

    Je t'ai déjà dit que pour l'encodage UTF8, il existe 2 formats de fichiers : avec BOM et sans BOM (Byte Order Mark)
    Tu n'as toujours pas précisé lequel des 2 tu souhaites utiliser !

    Ceci dit il est très simple d'effectuer la conversion des nombres en ajoutant quelques lignes.

    Ce qu'il y a de certain, c'est que tenter de convertir les nombres sur la feuille Excel n'est pas la bonne méthode.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Membre du Club Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Points : 52
    Points
    52
    Par défaut
    ce n'est pas ce que je fais
    avec ou sans BOM, je ne sais pas ce que c'est, jamais eu besoin. Donc je n'ai a priori rien à changer. Suis je en UTF8 Bom ou non Bom, je n'en sais rienje ne vois que UTF-8 ds les choix et ne sais pas ou ça se change s'il le faut.

    "Ceci dit il est très simple d'effectuer la conversion des nombres en ajoutant quelques lignes."

    Et les formules pour changer le format par number format ne fonctionnent pas, je pense l'avoir dit.
    voila pourquoi je galère..et que je suis la pour apprendre comment aire cette conversion par code

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2019, 10h43
  2. [Débutant] PB pour sortir en point au lieu de virgule dans un fichier TXT
    Par Avatar69 dans le forum VB.NET
    Réponses: 9
    Dernier message: 16/12/2014, 13h58
  3. points au lieu des espaces
    Par winbelk dans le forum Word
    Réponses: 2
    Dernier message: 10/04/2009, 03h03
  4. Réponses: 2
    Dernier message: 15/07/2008, 16h11
  5. Réponses: 3
    Dernier message: 10/02/2006, 15h31

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