Format colonne excel

Résolu
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007 - 28 déc. 2006 à 09:55
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007 - 29 déc. 2006 à 09:31
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 déc. 2006 à 19:05
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>
3
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
29 déc. 2006 à 09:31
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
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 déc. 2006 à 11:09
Pour un format comportant des 0 en début, essaie
NumberFormat = "00000"

MPi
0
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
28 déc. 2006 à 11:30
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 déc. 2006 à 12:02
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
0
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
28 déc. 2006 à 14:20
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...
0
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
28 déc. 2006 à 15:32
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...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 déc. 2006 à 19:02
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>
0
Rejoignez-nous