Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Excel : Problème des dates avec macros

  • Initiateur de la discussion Initiateur de la discussion ordi12
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

ordi12

Guest
Bonjour,

J'ai un problème avec Excel.

Lorsque je fais une conversion d'un *.csv vers *.xls grâce à des macros ; le format des dates n'est pas respecté, Excel n'utilise que le format américain.

par exemple la date 21/06/2006 n'est pas reconnu sous excel lors de cette conversion.

existe-il une solution à ce problème ?

PS:J'ai testé cette macro sous Excel 2007 beta 2 et j'ai constaté le même problème ?

Microsoft ou des développeurs ont-ils trouvé des solutions ?
 
re

tu peux t'inspirer de ce code réalisé pour .dat :


' Sélection du fichier de données
Dim Ouvrir As Variant
ChDir (ThisWorkbook.Path & '\\ARTIS')
' début zone récup .dat

'ouverture de fichier .dat
Ouvrir = Application.GetOpenFilename(filefilter:='Fichier Artis (*.dat),*.dat', Title:='Récupération des Données ARTIS')
If Ouvrir = False Then
MsgBox 'aucun fichier sélectionné', vbOKOnly + vbCritical, 'fin de procédure '
Sheets('Accueil').Select
erreur = 1
Exit Sub
End If

' utilisation d'Array car données trop nombreuses (sup à env 60 colonnes sur XL97)
Dim ColumnArray(1 To 256, 1 To 2) As Integer
Dim x As Integer

' ColumnArray contient les n° de colonnes et le type de données à prendre encompte
' 1 standard, 4 date
For x = 1 To 256
ColumnArray(x, 1) = x
ColumnArray(x, 2) = 1
Next x
'Définition des colonnes à mettre au format date
'_________________
'méthode par tableau vba
'Dim Coldates(1 To 10) As Integer
' Coldates(1) = 25
' Coldates(2) = 52
' Coldates(3) = 53
' Coldates(4) = 56
' Coldates(5) = 64
' Coldates(6) = 67
' Coldates(7) = 0
' Coldates(8) = 0
' Coldates(9) = 0
' Coldates(10) = 0
' For x = 1 To 10
' If Not Coldates(x) = 0 Then
' ColumnArray(Coldates(x), 1) = Coldates(x)
' ColumnArray(Coldates(x), 2) = 4
' End If
' Next x
'________________

' Ouverture du fichier .dat
Workbooks.OpenText Filename:=Ouvrir _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
False, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=ColumnArray
 
bonjour,

Merci pour ta réponse.

Je ne comprends pas très bien, tu me conseille de passer par un format *.dat.
Faire *.csv -> *.dat -> *.xls ?

Je suis débutant sous VB dans Excel et je ne sais pas comment adapter ton code pour corriger mon problème ?

Peux-tu m'expliquer un pe plus en détails ?

Merci
 
Je vais expliquer les manip que je n'arrive pas à effectuer avec les macro VB :


Ouverture du fichier *.csv

Conversion *.csv -> *.xls

Trier en fonction des dates et supprimer les lignes hors du mois.
(par exemple, on sélectionne le mois de juin et toute les lignes qui ne correspondent pas au mois de juin sont supprimées).

Créer un graphique dynamique

Sauvegarder ce fichier sous Graphique.xls

Voila en quelques mots ce que j'aimerais réaliser grâce à une macros sous Excel.

Malheuresement le format de date me bloque...
 
re

une petite explication :

dans l'exemple que je te donne, je change de répertoire pour me placer là où se trouve mes fichiers (chdir)

ensuite j'ouvre la boite de dialogue XL qui m'affiche les fichiers présents dans ce répertoire, filtré dan smon cas sur les .dat mais tu remplaces par .csv

à l'ouverture du fichier, je convertis les colonnes qui le nécessite en date (valeur 4 utilisée dans workbook.opentext, champ fieldinfo), méthode trouvée sur site microsoft.

si tu veux comprendre regarde l'aide vba pour les mots-clé comme opentext... (éclaire le mot et fais F1)

par contre pour les csv, ton délimiteur entre colonnes est peut-être la virgule ou le point virgule. Tu peux le savoir en utilisant l'enregistreur de macro

A+
 
Salut Pascal

je pense qu'en ouverture manuelle ordi12 n'a pas de pb, c'est avec vba que les dates sont interprètées us

mais effectivement quand je parle de l'analyseur de macro, si ordi12 sélectionne les formats par colonne, le code généré la fait apparaitre il me semble

A+
 
Bonjour,

mon délimitateur est en effet la virgule, mais il est vrai que manuellement je n'ai aucun problème. c'est seulement avec VB que les dates sont mal interprétées.

Je teste vos solutions et je vous tiens informer.
 
Je viens de tester cette macro :

Sub Macro()

' Sélection du fichier de données
Dim Ouvrir As Variant
' début zone récup .csv

'ouverture de fichier .dat
Ouvrir = Application.GetOpenFilename(filefilter:='Fichier d'Analyse (*.csv),*.csv', Title:='Récupération des Données Génésis')
If Ouvrir = False Then
MsgBox 'Aucun fichier sélectionné', vbOKOnly + vbCritical, 'Fin de procédure '
Sheets('Accueil').Select
erreur = 1
Exit Sub
End If

' utilisation d'Array car données trop nombreuses (sup à env 60 colonnes sur XL97)
Dim ColumnArray(1 To 256, 1 To 2) As Integer
Dim x As Integer

' ColumnArray contient les n° de colonnes et le type de données à prendre encompte
' 1 standard, 4 date
For x = 1 To 256
ColumnArray(x, 1) = x
ColumnArray(x, 2) = 1
Next x
'Définition des colonnes à mettre au format date
'_________________
'méthode par tableau vba
'Dim Coldates(1 To 10) As Integer
' Coldates(1) = 25
' Coldates(2) = 52
' Coldates(3) = 53
' Coldates(4) = 56
' Coldates(5) = 64
' Coldates(6) = 67
' Coldates(7) = 0
' Coldates(8) = 0
' Coldates(9) = 0
' Coldates(10) = 0
' For x = 1 To 10
' If Not Coldates(x) = 0 Then
' ColumnArray(Coldates(x), 1) = Coldates(x)
' ColumnArray(Coldates(x), 2) = 4
' End If
' Next x
'________________

' Ouverture du fichier .csv
Workbooks.OpenText Filename:=Ouvrir _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
False, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=ColumnArray

End Sub

Malheureusement, le format des dates n'est pas correct. Cette macro était-elle bonne ?

Comment puis-je réaliser ce projet (voir le message précédent) ?

Merci de vos conseils
 
re

1/ je pense que la première partie fonctionne (ton csv s'est affiché et tu l'as ouvert

2/ensuite imaginons que tu veux la colonne 4 et la 8 en date, modifie comme suit :

'méthode par tableau vba
Dim Coldates(1 To 10) As Integer
Coldates(1) = 4
Coldates(2) = 8
Coldates(3) = 0
Coldates(4) = 0
Coldates(5) = 0
Coldates(6) = 0
Coldates(7) = 0
Coldates(8) = 0
Coldates(9) = 0
Coldates(10) = 0
For x = 1 To 10
If Not Coldates(x) = 0 Then
ColumnArray(Coldates(x), 1) = Coldates(x)
ColumnArray(Coldates(x), 2) = 4
End If
Next x
'________________

j'ai en effet prévu jusqu'à 10 colonnes dates il faut que tu enlèves les ' de début de ligne (mise en commentaire) et que tu mettes la numéro des colonnes qui t'intéressent et 0 pour remplir coldates jusqu'à l'indice 10

A+
 
Voila ce que j'ai modifié dans la macros :

'méthode par tableau vba
Dim Coldates(1 To 3) As Integer
Coldates(1) = 6
Coldates(2) = 10
Coldates(3) = 11

For x = 1 To 3
If Not Coldates(x) = 0 Then
ColumnArray(Coldates(x), 1) = Coldates(x)
ColumnArray(Coldates(x), 2) = 4
End If
Next x
'________________

Les colonnes que je veux en date sont les colonnes 6, 10 et 11.

Malheureusement, lorsque j'éxécute cette macro le format de date n'est pas bon.

J'avais également vu une solution sur le site de Microsoft mais je n'ai eu aucun résultat satisfaisant (solution trouvé sur le site : http://support.microsoft.com/default.aspx?scid=kb;fr;911750)

Comment coriger ce problème, et de plus je n'arrive pas non plus à trier selon les dates puisque le format n'est pas bon ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
5
Affichages
6 K
M
  • Question Question
Réponses
3
Affichages
1 K
mokhtar_Alpha
M
P
Réponses
2
Affichages
2 K
premion
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…