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 :

Replace point en virgule [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut Replace point en virgule
    Bonjour à toutes et à tous,

    je viens de me rendre compte d'un problème non négligeable en apportant des modifications à une macro excel.
    La fonction replace fait n'importe quoi et ce depuis des mois (depuis toujours dans cette macro ? ).

    Le contexte, j'exploite des résultats de différents benchmarks importés via CSV dans une feuille Excel. Sauf que la virgule est un point dans ces CSV pour les flottants.
    Donc du coup il est nécessaire de faire intervenir la fonction Replace pour la version française d'Office.

    Sauf que lorsqu'il y a trop de chiffres après les virgules (le point) il zappe totalement le remplacement et fait une simple suppression...
    Exemple :
    7.5
    12.456789
    2.1
    6.456
    8.123
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub testReplace()
        Cells.Replace ".", ","
    End Sub
    L'exécution de cette macro sur les données précédentes nous donne (avec formatage automatique - que je vous recopie pour bien cerner le problème) :
    7,5
    12 456 789
    2,1
    6 456
    8 123
    Vous imaginez bien que voir mes résultats passer de la microseconde à la seconde a de quoi me faire pleurer...
    J'ai tenté d'appliquer le Replace sur une cellule à la fois sans plus de succès...

    Quelqu'un a-t-il une idée ?

    cordialement,
    xTG.

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Je me répond à moi même après avoir fait un test qui pouvait sembler être très c*n...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub testReplace()
        Cells.Replace ".", "."
    End Sub
    Et là miracle...
    Sont fort chez microsoft, ils ont plusieurs types de point.

    Bon pour l'histoire, VBA est totalement en anglais donc j'aurai du y penser... Mais on est totalement désaxé puisque toute valeur affichée se fait dans une feuille Excel qui elle fonctionne avec des virgules (mais qui sont en fait des points)...

    Alors après pourquoi avec ma première macro j'avais quand même quelques résultats satisfaisants... Là je vous laisse vous creuser la tête !

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, et en ajoutant dans l'import du CSV
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Workbooks.Open Filename:="C:\Transfert\Test CSV.csv", local:=False

  4. #4
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Je les importe avec un FileSystemObject en fait pour ne pas avoir à traiter deux fois les données (je traite les fichiers ligne par ligne au fur et à mesure de l'import) car ils sont assez gigantesques.

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, donc tu n'as même pas essayé de voir si cela fonctionnait .....

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Je pars du principe que si tu me le recommandes c'est que tu as testé et que cela répond au problème non ?

    Et comme je l'ai dit je ne peux pas traiter mes CSV avec cette commande en raison de leur taille et de la quantité de traitement que j'ai à leur appliquer. Excel a ses limites (j'ai l'impression que cela dépend de la puissance du PC...) et plante lorsqu'on tente d'ouvrir un CSV comprenant trop de ligne (en VBA j'entends). Alors qu'avec un FileSystemObject et une lecture ligne à ligne il n'y a aucun souci.

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

Discussions similaires

  1. [VBExpress2005] Point décimal/virgule dans un masque de saisie
    Par BassBeat dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/05/2006, 23h57
  2. [d7]pavé numérique point et virgule
    Par dleu dans le forum Langage
    Réponses: 8
    Dernier message: 28/04/2006, 03h23
  3. [DELPHI WIN32] Remplacer points par virgules
    Par manubrard dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2006, 15h02
  4. Réponses: 3
    Dernier message: 11/11/2005, 11h59
  5. sprintf : le point devient virgule ?!
    Par jula dans le forum C++
    Réponses: 4
    Dernier message: 17/09/2004, 12h50

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