|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: avril 2007
Messages: 72
|
Bonjour,
j'ai un petit problème suite à l'import d'un fichier CSV. une de mes colonne importée contient des dates, et dans le fichier excel, les dates sont aléatoirement conciderer comme date ou string ce qui empeche de faire des filtres automatiques. Le parcours de chacune des ligne avec Code :
range("h" & ligne)=cdate(range("h" & ligne)) Avez vous une solution ? Dernière modification par Philippe JOCHMANS ; 04/02/2010 à 12h16. Motif: Ajout des balises codes (sélection du code + bouton # dans la fenêtre de rédaction des messages) |
|
|
|
|
|
#2 (permalink) | |
|
Membre Expert
![]() Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
|
Citation:
Sinon, en fonction de ta méthode d'import du CSV, tu peux peut-être directement travailler sur les lignes CSV. A+
__________________
N'oubliez pas le si votre problème est solutionné.
|
|
|
|
|
|
|
#3 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: avril 2007
Messages: 72
|
je dit que ce n'est pas possible car cette manip prend a peu près 10minutes...
pour les condition dans l'import, en fait quand je fais le workbooks.open et que je met mon fichier CSV, il l'ouvre directement en format excel ( pas toutes les colonnes dans la même cellule) donc je peux pas faire tu convertir... |
|
|
|
|
|
#4 (permalink) | |
|
Membre Expert
![]() Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
|
Citation:
As tu essayé en mettant le sreenupdating à False et/ou en désactivant les calculs automatiques? Ca me parrait énorme pour "seulement" 15000 lignes?
__________________
N'oubliez pas le si votre problème est solutionné.
|
|
|
|
|
|
|
#6 (permalink) |
![]() Nom : Didier GONARD
Date d'inscription: février 2008
Localisation: Nantes
Messages: 546
|
Bonjour,
par vba ou autre... tu ajoutes une colonne en vba à côté de la tienne (la C ajoutée par exemple à gauche de la D qui contient tes données) et tu appliques : Code :
Sub Trans() With Columns("C:C") .FormulaR1C1 = "=RC[1]*24/24" .NumberFormat = "m/d/yyyy" 'ou format voulu... End With End Sub Sans vba.. tu ajoutes la colonne, tu la sélectionnes, tu tapes =, clic sur la cellule de la m^me ligne de la colonne voulue, *24/24 et tu valides par CTRL+Entrée tu supprimes l'ancienne ensuite... cordialement, Didier
__________________
Didier Gonard - Tutoriel : Comprendre et gérer les dates sous Excel et en VBA N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
|
|
#8 (permalink) | |
![]() Nom : Didier GONARD
Date d'inscription: février 2008
Localisation: Nantes
Messages: 546
|
Bonjour,
en premier lieu, le soucis est de savoir si ça marche chez toi ? Sinon, c'est trop long à expliquer en 2 lignes, ça tient de l'interprétation des dates sous Excel (différente en vba), de la notion de numéro de série et de la représentation décimale d'une durée... Citation:
cordialement, Didier
__________________
Didier Gonard - Tutoriel : Comprendre et gérer les dates sous Excel et en VBA N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
|
|
|
#9 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: avril 2007
Messages: 72
|
bon ca a l'air de marcher
je te remercie beaucoup et le traitement est rapide (même pour les 15Kligne) edit : juste un petit problème dans toute les case vide de la colonne il me met 00/01/1900 ce n'est pas un problème très grave mais bon si il y a un moyen simple de l'éviter Dernière modification par imaril ; 04/02/2010 à 14h13. |
|
|
|
|
|
#10 (permalink) |
![]() Nom : Didier GONARD
Date d'inscription: février 2008
Localisation: Nantes
Messages: 546
|
Bonjour,
c'est logique, vois comme ceci : Code :
Sub Trans() With Columns("C:C") .FormulaR1C1 = "=IF(RC[1]<>"""",RC[1]*24/24,"""")" .NumberFormat = "m/d/yyyy" End With End Sub sinon pour mieux comprendre tu peux répliquer le tableau ci-dessous dans une feuille ![]() ps : les formules sont à relativiser par lignes... cordialement, Didier
__________________
Didier Gonard - Tutoriel : Comprendre et gérer les dates sous Excel et en VBA N'oubliez pas de mettre : ..quand c'est le cas !
Dernière modification par Ormonth ; 04/02/2010 à 15h45. Motif: ménage suite post suivant |
|
|
|
|
#12 (permalink) |
![]() Nom : Didier GONARD
Date d'inscription: février 2008
Localisation: Nantes
Messages: 546
|
Bonjour,
voici plus propre, ça te rajoute une colonne transitoire, te fait le traitement voulu, recopie les valeurs de la colonne obtenue sur elle-même et supprime la colonne originelle... (car si tu supprimes la colonne tout court, les formules à côté ne vont pas aimer...) attention => suppression colonne ! Code :
Sub Trans2() With Columns("D:D") .Insert Shift:=xlToRight '.select '' ne pas mettre dans le code surtout, à activer pour compréhension de la suite si besoin... ''le with column("D:D") pointe vers la colonne E apparente suite à l'insertion, mais qui représente toujours l'objet d'origine '' à savoir la colonne pointée via l'instruction With... .Offset(0, -1).FormulaR1C1 = "=IF(RC[1]<>"""",RC[1]*24/24,"""")" .Offset(0, -1).NumberFormat = "m/d/yyyy" .Offset(0, -1).Copy .Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False .Delete End With End Sub Didier
__________________
Didier Gonard - Tutoriel : Comprendre et gérer les dates sous Excel et en VBA N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
|
|
#13 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: avril 2007
Messages: 72
|
je t'ai devancé sur ce point je pense voici le code que j'ai fait :
Code :
Sub convert_date(num_col As Integer) Columns(num_col).Insert Shift:=xlToRight With Columns(num_col) .FormulaR1C1 = "=if(RC[1]<>"""",RC[1]*24/24,"""")" .NumberFormat = "dd/mm/yyyy hh:mm" .Copy .PasteSpecial Paste:=xlPasteValues End With Cells(1, num_col) = Cells(1, num_col + 1) Columns(num_col + 1).EntireColumn.Delete End Sub par rapport au formule, je n'en ai pas besoin, vu que par la suite je vais copier tt les valeur de mon CSV dans un nouveau fichier et il n'y a pas de formule dans un CSV ^^ |
|
|
|
|
|
![]() |
||
[XL-2003] Convertir une colonne en date apres import CSV
|
||
| Outils de la discussion | |
|
|