begin process at 2013 05 25 20:56:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Problème format da date après importation csv


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème format da date après importation csv

lundi 23 juillet 2012 à 08:04:03 | Problème format da date après importation csv

robby98800

Bonjour à tous,

alors voilà j'ai un souci que je n'arrive pas à comprendre. J'importe un fichier .csv qui comporte sur la première colonne des dates comme celle-ci : 11/03/2012 (soit 11 Mars 2012).
Quand le fichier est importé dans un nouveau classeur excel la date devient : 03/11/2012.

En fait je sélectionne les données qui sont comprises entre deux dates que l'utilisateur peut choisir grâce a un calendrier DTPicker dans une userform. Je ne sais pas si le souci pourrait venir d'ici, parce que le calendrier est lui au "bon format" c'est à dire 11/03/2012 (11 Mars 2012)

Je vous montre le code que j'utilise pour importer le fichier csv. (Celui ci doit etre compris dans le même dossier que le fichier excel ou l'on copie les données).


Code Visual Basic :
Dim derligne1 As Long
Dim derligne2 As Long, derligne3 As Long, derligne4 As Long, derligne5 As Long, derligne6 As Byte
Dim tablo1 As Variant, tablo2 As Variant, tablo3 As Variant
Dim ecart_date As Integer
Dim I As Long, k As Long, u As Byte, f As Long
Dim Tablo() As Variant, CelSource As Variant
Dim Cel As Range
Dim ladate1 As Date, ladate2 As Date
Dim Source
Dim Temp As String
Dim TabloOK  As Boolean
Dim fs

'Importer les données de plusieurs classeurs


Application.ScreenUpdating = False
Set fs = CreateObject("Scripting.FileSystemObject")

TabloOK = False
  derligne2 = Sheets("releve_erreur").Range("A" & Rows.Count).End(xlUp)(2).Row 'definit la derniere ligne de la colonne A
  ladate1 = DTPicker1.Value
  ladate2 = DTPicker2.Value
Temp = Dir(ActiveWorkbook.Path & "\*.csv")
Do While Temp <> ""
    Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Temp

      With Sheets(1)
        derligne3 = Cells(Rows.Count, 1).End(xlUp).Row
        For Each Cel In .Range("A2:A" & derligne3)
        CelSource = Split(Cel.Value, ";")
          If Cel = ";;;;" Then GoTo suite:
          If CelSource(0) >= ladate1 Then
          If CelSource(0) <= ladate2 Then
          TabloOK = True
          f = f + 1
            ReDim Preserve Tablo(1 To 5, 1 To f)
            Tablo(1, f) = CelSource(0)
            Tablo(2, f) = CelSource(1)
            Tablo(3, f) = CelSource(2)
            Tablo(4, f) = CelSource(3)
            Tablo(5, f) = CelSource(4)
          End If
          End If
        Next Cel
      End With
suite:
  ActiveWindow.Close SaveChanges:=False
  If TabloOK = True Then Range(Cells(derligne2, 1), Cells(derligne2 + f - 1, 5)).Value = _
                      Application.WorksheetFunction.Transpose(Tablo)
  Temp = Dir
Loop
MsgBox "Les données sont transférées"
Application.ScreenUpdating = True



Merci de votre aide

Robin
mardi 24 juillet 2012 à 16:51:13 | Re : Problème format da date après importation csv

MPi

Salut,

Essaie comme ceci pour voir si ça règle ton problème.
Tu dois mettre une référence à Microsoft Forms 2.0 Object Library
Adapte selon tes besoins...
Code Visual Basic :
    Dim strTemp As String
    Dim MyDataObject As DataObject

        Open NomDuFichier For Binary As #1
        strTemp = Space$(LOF(1))
        Get #1, , strTemp
        
        Set MyDataObject = New DataObject
        MyDataObject.SetText strTemp
            nbLignes = Cells(Rows.Count, "A").End(xlUp).Row + 1 
            MyDataObject.PutInClipboard
            Range("A" & nbLignes).PasteSpecial
            Close #1
    
        MyDataObject.Clear
        Set MyDataObject = Nothing


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
mardi 24 juillet 2012 à 17:16:34 | Re : Problème format da date après importation csv

ucfoutu

Membre Club
Bonjour,
Cela veut dire que ton fichier csv contient des strings.
Si ta colonne A est formatée en date ===>>
Code Visual Basic :
For Each c In Columns("A1:A" & Rows.Count).SpecialCells(xlCellTypeConstants)
  c.Value = c.Text
Next

Cet exemple démarre à la ligne 1 de la colonne A. Si autre ligne (exemple A3 ===>> change A1 par A3)
A ne lancer qu'une seule fois après l'importatiçion, hein !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
mercredi 25 juillet 2012 à 10:15:35 | Re : Problème format da date après importation csv

robby98800

Bonjour,

ucfoutu, avec
Code Visual Basic :
For Each c In Columns("A2:A" & Rows.Count).SpecialCells(xlCellTypeConstants)
, ce la me renvoit une erreur d'exécution 1004: erreur défini par l'objet ou par l'application.
J'ai modifié par
Code Visual Basic :
For Each c In Range("A2:A" & Rows.Count).SpecialCells(xlCellTypeConstants)
et la ça fonctionne !

Par contre c'est très long .. Il n'y a pas un moyen de le traiter avec un tableau(array)?

MPi merci d'avoir répondu, c'est intéressant à décortiquer mais je dois avouer que je suis quand même débutant et il me faudra m'y pencher plus dessus pour comprendre ton code. Il sert à importer et à mettre les dates au bon format ou juste changer les dates au bon format après l'importation?
mercredi 25 juillet 2012 à 10:34:19 | Re : Problème format da date après importation csv

ucfoutu

Membre Club

Il n'y a pas un moyen de le traiter avec un tableau(array)?


Je pense que oui, mais en utilisant alors CDate sur les strings.
Je pense par ailleurs que tu gagnerais du temps avec le 1er code en le faisant( précéder d'une inhibition de l'affichage (Application.ScreenUpdating = False) à rétablir à True en sortie de ta boucle.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
mercredi 25 juillet 2012 à 11:45:51 | Re : Problème format da date après importation csv

MPi

Mon bout de code sert à importer un fichier en passant par le "clipboard" d'Excel.

Je me suis rendu compte qu'Excel gérait bien les dates, entre autres, de cette façon. C'est comme si Excel prenait le temps de traduire les données lorsqu'elles passaient par le presse-papiers.

Le principe est d'ouvrir le fichier csv comme si c'était un fichier txt, de copier le tout dans le clipboard et de transférer dans Excel. Ça se passe très rapidement et ça fonctionne bien dans mon cas.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
mercredi 25 juillet 2012 à 12:00:25 | Re : Problème format da date après importation csv

robby98800

Ok merci pour vos réponse.
Je ne connaissais pas le clipboard d'Excel ,je vais me renseigner sur ça.

ucfoutu, pourrais tu me donner plus de précision quant au Cdate sur les strings, ça reste assez flou pour moi.
Merci!
mercredi 25 juillet 2012 à 12:52:23 | Re : Problème format da date après importation csv

ucfoutu

Membre Club

ucfoutu, pourrais tu me donner plus de précision quant au Cdate sur les strings


je ne saurais faire mieux en explications que celles que tu trouveras dans ton aide VBA en ouvrant simplement sur le mot .... devine donc ===>>> cdate !
Alors ? ===>> fais-en autant, s'il te plait

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
jeudi 26 juillet 2012 à 07:42:36 | Re : Problème format da date après importation csv

robby98800

Bonjour ucfoutu,

J'ai essayé avec CDate sur une seule cellule de mon tableau (parce que je n'arrivais pas à le faire avec une boucle pour tout un array), le format de la cellule n'est pas modifié (elle reste 05/08/2012 au lieu de 08/05/2012).

N'y a-t-il pas une autre manière de faire? C'est vraiment dommage parce que la solution que tu m'as proposé fonctionne très bien mais même avec un Application.ScreenUpdating = False rétablit ensuite, ça reste vraiment très long.
jeudi 26 juillet 2012 à 08:22:06 | Re : Problème format da date après importation csv

ucfoutu

Membre Club
Montre ce que tu as écrit !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

1 2

Cette discussion est classée dans : date, long, tablo, if, celsource


Répondre à ce message

Sujets en rapport avec ce message

convert long en Date [ par sygale ] Lancer un fichier .vbs à partir d'une date [ par Warter ] Je cherche à lancer un fichier en .vbs à partir d'une date, pour faire un sorte de date de validité à un logiciel. Le logiciel ce lance à chaque démar vbs démarrage à partir d'une date [ par Traftor ] Je cherche à lancer un fichier en .vbs à partir d'une date, pour faire un sorte de date de validité à un logiciel. Le logiciel ce lance à chaque démar Couleur de fond d'un contrôle slider [ par Leo_Robotic_Passion ] Bonjour a tous Quelqu'un peut me dire dans un 1er temps si il y a un incon Probleme avec les date [ par RAvin ] Bonjour a tous , je me remet a la programmation apres un bon bout de temps et je suis bloqué sur un script VBS.Je veux qu'a une date présise s'affiche Supprimer ligne avec date d'aujourd'hui [ par fgassmann ] Bonjour, J'aimerais pouvoir supprimer les lignes qui contiennent la date d'aujourd'hui dans une certaine colonne,voici mon codeSub Macro1()  Dim i As Besoin d'aide pour mon projet VBA [ par Eleasias ] Je suis novice comme certains le savent déjà et je dois faire une macro VBA dans le cadre de mon stage.Quelques un d'entre vous m'ont déjà aidé et je Récupération des variables [ par Dominike ] Bonjour à tous !Je savais que je me lançais dans un projet au-dessus de mes compétences, mais c'est à mon avis comme cela comme apprend.Bref, après av problème de date access et vb.net [ par thierry la fronde ] Bonjour à tousJe voudrais comparer deux dates :une venant de ma base access (= à date.now)une autre étant une variable date = à date.now  les deux dat dépassement de capacité [ par amita ] j'ai un control activex contient une Hscroll et Vscroll je charge une image de grande dimension, j'ai un méssage d'erreur de dépassement de capacité


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,026 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales