615 votes

Empêcher Excel de convertir automatiquement certaines valeurs de texte en dates

Est-ce que quelqu'un sait s'il existe un jeton que je peux ajouter à mon csv pour un certain champ afin qu'Excel n'essaie pas de le convertir en date ?

J'essaie d'écrire un fichier .csv à partir de mon application et l'une des valeurs ressemble suffisamment à une date pour qu'Excel la convertisse automatiquement de texte en date. J'ai essayé de mettre tous mes champs de texte (y compris celui qui ressemble à une date) entre guillemets, mais cela n'a aucun effet.

4voto

GW4 Points 1

Je suis tombé cette semaine sur cette convention, qui semble être une excellente approche, mais je ne la trouve référencée nulle part. Quelqu'un la connaît-il ? Pouvez-vous en citer une source ? Je n'ai pas cherché pendant des heures et des heures mais j'espère que quelqu'un reconnaîtra cette approche.

Exemple 1 : =("012345678905") s'affiche comme suit 012345678905

Exemple 2 : =("1954-12-12") s'affiche comme suit 1954-12-12 pas 12/12/1954 .

4voto

Harry Duong Points 29

Bonjour, j'ai le même problème,

J'écris ce vbscipt pour créer un autre fichier CSV. Le nouveau fichier CSV aura un espace dans la police de chaque champ, afin qu'Excel le comprenne comme du texte.

Il faut donc créer un fichier .vbs avec le code ci-dessous (par exemple Modify_CSV.vbs), le sauvegarder et le fermer. Glisser-déposer votre fichier original à votre fichier vbscript. Il créera un nouveau fichier avec "SPACE_ADDED" au nom du fichier dans le même emplacement.

Set objArgs = WScript.Arguments

Set objFso = createobject("scripting.filesystemobject")

dim objTextFile
dim arrStr ' an array to hold the text content
dim sLine  ' holding text to write to new file

'Looping through all dropped file
For t = 0 to objArgs.Count - 1
    ' Input Path
    inPath = objFso.GetFile(wscript.arguments.item(t))

    ' OutPut Path
    outPath = replace(inPath, objFso.GetFileName(inPath), left(objFso.GetFileName(inPath), InStrRev(objFso.GetFileName(inPath),".") - 1) & "_SPACE_ADDED.csv")

    ' Read the file
    set objTextFile = objFso.OpenTextFile(inPath)

    'Now Creating the file can overwrite exiting file
    set aNewFile = objFso.CreateTextFile(outPath, True) 
    aNewFile.Close  

    'Open the file to appending data
    set aNewFile = objFso.OpenTextFile(outPath, 8) '2=Open for writing 8 for appending

    ' Reading data and writing it to new file
    Do while NOT objTextFile.AtEndOfStream
        arrStr = split(objTextFile.ReadLine,",")

        sLine = ""  'Clear previous data

        For i=lbound(arrStr) to ubound(arrStr)
            sLine = sLine + " " + arrStr(i) + ","
        Next

        'Writing data to new file
        aNewFile.WriteLine left(sLine, len(sLine)-1) 'Get rid of that extra comma from the loop

    Loop

    'Closing new file
    aNewFile.Close  

Next ' This is for next file

set aNewFile=nothing
set objFso = nothing
set objArgs = nothing

2voto

syandras Points 21

Ce n'est pas Excel. Windows reconnaît la formule, les données comme une date et corrige automatiquement. Vous devez modifier les paramètres de Windows.

Panneau de configuration" (-> "Passer à l'affichage classique") -> "Options régionales et linguistiques" -> onglet "Options régionales" -> "Personnaliser". Options" -> onglet "Options régionales" -> "Personnaliser..." -> onglet "Numéros" -> et puis modifiez les symboles en fonction de ce que vous voulez.

http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html

Il fonctionnera sur votre ordinateur, si ces paramètres ne sont pas modifiés ; par exemple, sur l'ordinateur de vos clients, ils verront des dates à la place des données.

0voto

Richard Points 1

J'ai trouvé un moyen simple de le faire dans Excel 2003 à 2007. Ouvrez un classeur xls vierge. Puis allez dans le menu Données, importer des données externes. Sélectionnez votre fichier csv. Passez par l'assistant et ensuite dans "format de données de la colonne" sélectionnez toute colonne qui doit être forcée à "texte". Cela importera toute la colonne au format texte, empêchant Excel d'essayer de traiter des cellules spécifiques comme des dates.

-1voto

Harley Holcombe Points 34618

Si vous mettez une virgule inversée au début du champ, celui-ci sera interprété comme du texte.

Exemple : 25/12/2008 devient '25/12/2008

Vous pouvez également sélectionner le type de champ lors de l'importation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X