Format colonne excel

[Résolu]
Signaler
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007
-
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007
-
Salut

J'ai un petit probleme pour l'ouverture d'un csv dans excel.
J'ai dans un fichier csv des champs contenant une chaine de caractere comme suit : "00001"
Le problème c'est que Excel me met "1" lui.
Je fait donc un traitement pour mettre les colonnes en chaine de caractere. Le probleme c'est que mon workbook n'existe pas
et que je n'arrive pas a creer le tout avec des objets Excel... (et si je fait le traitement apres seuls les dates seront modifiés bien evidemment, les "0000" ne seront deja plus la et seul le "1" sera convertit.)

  For Cpt = 0 To nbre_colonne

    Select Case tabType(Cpt)

      Case 4, 6, 7, 133

        XLApp.ActiveWorkbook.Sheets(1).Columns(lngCpt + 1).NumberFormat = "DD/MM/YYYY"

      Case 135

        XLApp.ActiveWorkbook.Sheets(1).Columns(lngCpt + 1).NumberFormat = "DD/MM/YYYY hh:mm:ss"

      Case 202

        XLApp.ActiveWorkbook.Sheets(1).Columns(lngCpt + 1).NumberFormat = "@"

    End Select

  Next

  XLApp.Workbooks.OpenText FileName:=strFileTemp, DataType:=xlDelimited, other:=True, otherchar:=";"

Merci pour vos réponses...
A bientot :)

8 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

il faut mettre une apostrophe avant tes nombres. Les zéros resteront !

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

héhé ^^
J'y est meme pas pensé...
Le probleme serait qu'apres dans vb quand je recupere le champ de la cellule il y orait un "'" (je sais le traitement pour l'enlever n'est pas bien dur :p)

J'ai fini par trouvé ceci :

Dans mon appel de copie du fichier csv il suffit de rajouter fieldInfo et un tableau comme suit :


array(array(num_colonne1,type_col1), array(num_colonne2,type_col2),
array(num_colonne3,type_col3), array(num_colonne4,type_col4))



avec comme on peut le voir ci dessous :
en premier parametre du array le numéro de colonne qui vous interesse et en second le type de format qu'elle doit avoir.


Types :
1:standard
2:texte
3 et + : dates...


soit par exemple :


m_XLApp.Workbooks.OpenText FileName:=strFileTemp, DataType:=xlDelimited, other:=True, otherchar:=";", FieldInfo:=Array(Array(1, 2), Array(2, 1), Array(3, 2), Array(4, 4), Array(5, 1))



Voili voilou
merci quand même pour ceux qu'auront regardés pour moi :)
a+
bon courage
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Pour un format comportant des 0 en début, essaie
NumberFormat = "00000"

MPi
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

En fait le problème c'est que des fois ca peut etre "000" le format...
C'est pour ca qu'il faut que je puisse me mettre en format texte (@)

En fait ce que je voudrai faire c'est :

creer un fichier excel avec un workbook et une feuille.
Faire mon traitement de transtypage en @
Mettre le fichier csv dans cette feuille
mais j'arrive pas a men sortir avec les Excel.workbooks et Excel.sheets

j'ai fait un truc du genre (je l'ai effacé donc je ne m'en rapel plus trop, j sais juste que ca nbe fonctionne pas) :

dim XLApp as new excel.application
dim wbk as excel.workbooks
dim sht as excel.sheets

set wbk = XLApp.workbooks.add
set sht = XLApp.activesheet

  For Cpt = 0 To nbre_colonne
    Select Case tabType(Cpt)
      Case 4, 6, 7, 133
        wbk.Sheets(1).Columns(lngCpt + 1).NumberFormat = "DD/MM/YYYY"
      Case 135
        wbk.Sheets(1).Columns(lngCpt + 1).NumberFormat = "DD/MM/YYYY hh:mm:ss"
      Case 202
        wbk.Sheets(1).Columns(lngCpt + 1).NumberFormat = "@"
    End Select
  Next

  wbk.OpenText FileName:=strFileTemp, DataType:=xlDelimited, other:=True, otherchar:=";"

Voili voilou
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Lorsque le format est "000", est-ce que c'est pour une colonne complète ou est-ce que c'est aléatoire dans une même colonne ?

Si le format est fixe pour une colonne donnée, tu pourrais vérifier le nombre de caractères d'une cellule et ajuster le format "000..." selon le Len(Cellule.text)

MPi
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

C'est par colonne que ca se passe. Le problème c'est que mon tableau tabType me donne le type de la colonne. Je sais donc si ca doit etre du caractere ou si ca dopit etre une date ou du numerique ....
Et lorsque c'est une chaine de caractere je peut avoir "0001" ou "salut"... c'est pour cela que je n'est pas d'autre choix que de mettre en texte comme type excel avant d'insere mon fichier csv...
Messages postés
64
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 juin 2007

En gros je voudrais faire ceci :

Creer un fichier excel avec workbook. Formatter la premiere colonne en texte pour que si je marque "0001" il laisse "0001" et non "1". Mettre dans cette feuille que je vien de formatter un fichier csv.
C'est juste ca en fait que je ne sais pas faire : creer un fichier et une fois qu'il existe mettre le fichier csv dans celui-ci...
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

il faut mettre une apostrophe avant tes nombres. Les zéros resteront !

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>