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 :

Problème de format code postal [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut Problème de format code postal
    Bonjour.

    J'ai un problème lors d'un enregistrement d'un fichier en csv par VBA.
    J'ai un champs qui contient des codes postaux et mon problème, c'est que la valeur réél des champs des départements qui commencent par 0 est transformée en nombre à quatre chiffres (le 0 est supprimé).

    J'ai tenté de mettre ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Columns("C:C").NumberFormat = "00000"
    Columns("C:C").NumberFormat = "00000"

    Puis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Columns("C:C").NumberFormat = "@"
    Et enfin, désespéré, j'ai tenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C" & i).Value = Range("C" & i).Text
    Mais rien de tout ça ne fonctionne!
    A chaque fois, mon code postal 01000 se transforme en 1000 !!
    Quelque chose m'échappe!

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Une question d'abord et après on peut trouver la réponse, tu ouvres un csv via excel ou tu enregistres un excel en csv?
    En gros, je pense que tu essaies de modifier le format de ta cellule une fois que les nombres 5 chiffres sont déjà transformés en 4 chiffres.
    Et si jamais tu peux, mets un peu plus de code.
    A +
    M.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    "0####"

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    hmmm
    Moi j'aurais mis "0????"
    Mais bon, sans doute que les deux fonctionnent.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, melouille58,

    J'ai répondu ainsi (et ça fonctrionne, bien évidemment), car j'ai vu qu'il avait défini le format en numérique.
    La vraie question était (mais une expérience récente me décourage d'insister...) : Pourquoi en numérique ? un code postal n'est pas un nombre, mais un numéro identificateur et donc une chaîne de caractères (format texte) tout simplement, et sans aucune spécification autre nécessaire

    EDIT :
    En outre : il lui aurait (avec la methode qu'il utilisait) suffi d'ouvrir son enregistreur de macros, de choisir mle format spécial CodePostal pour sa colonne, d'arrêter l'enregistreur, puis d'aller voir la syntaxe utilisée dans un tel cas
    Elle est celle qu'il utilise (celle essayée en 1er) et fonctionne bien ... (pour l a colonne choisie, bien sûr)

  6. #6
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Bonjour et merci pour ces réponses...
    Alors: "0####" et "0????" ça ne fonctionne pas...
    Pour répondre à ucfoutu: C'est une feuille escel que j'enregistre en csv.

    Pourquoi en numérique ? un code postal n'est pas un nombre, mais un numéro identificateur et donc une chaîne de caractères (format texte) tout simplement, et sans aucune spécification autre nécessaire
    Précision:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Columns("C:C").NumberFormat = "@"
    Ce code que j'ai essayé indique que le format demandé est une chaine

    J'ai même tenté de stocker le code dans une variable string et de le replacer dans la cellule mais rien y fait, mon 0 disparaît!!!

    En outre : il lui aurait (avec la methode qu'il utilisait) suffi d'ouvrir son enregistreur de macros, de choisir mle format spécial CodePostal pour sa colonne, d'arrêter l'enregistreur, puis d'aller voir la syntaxe utilisée dans un tel cas
    C'est exactement la première chose que j'ai faite! L'enregistrement m'avais donnée ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Columns("C:C").NumberFormat = "00000"
    J'ai vérifié une chose: lorsque j'ouvre mon document excel, les 0 sont bien là.
    dans la cellule, le texte est le code postal (01000 par ex) et dans la zone de formule le teste est le code postal précédé d'une apostrophe (par ex '01000)

    Merci pour votre aide!

    EDIT:J'ai executé mon code bout par bout et j'ai pu determiner a quel moment le code postal perd son zéro. C'est au moment ou je l'enregistre en csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\*****\Bureau\*****" & "\" & NewFile, FileFormat:=xlCSV, local:=True
    Je ne comprend plus rien:/


    EDIT2:
    Mouarf....
    J'ai trouvé, c'est le paramètre local:=true qui génère l'erreur...
    Le problème c'est que si je l'enlève, le séparateur n'est plus le point virgule mais la virgule et ça c'est embêtant...
    Enfin, je vais trouver une solution.

    Merci a tous, je marque résolu

  7. #7
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Heuu en fait j'ai analysé un peu le truc...
    J'avais utilisé le paramètre local:=true pour que mon séparateur soit le point virgule. Si j'enlève ce paramètre, le séparateur devient la virgule.

    Si j'ouvre mon nouveau fichier csv avec excel, tous les champs s'affichent dans la première cellule alors qu'avec le séparateur ";", Excel reconnait les champs chaque cellule correspond à un champs... Du coup, il reconnait aussi les nombre et vire les zéros devant... Je pense que c'est ça mais corrigez moi si je me trompe...

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

Discussions similaires

  1. [XL-2003] Format code postal Canadien
    Par dlight dans le forum Excel
    Réponses: 7
    Dernier message: 29/06/2010, 09h48
  2. Requete nom ville pour avoir code postal,avec une base sous format XMl
    Par naouah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 20h00
  3. Format cellule code postal
    Par greg26 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/09/2007, 15h40
  4. Quel est le problème dans ce code ?
    Par Luther13 dans le forum C
    Réponses: 12
    Dernier message: 26/08/2003, 16h09
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19

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