|
|
|
|
Bonjour,
J'importe des fichiers .txt dans excel 2003 via un code VBA (code qui a été créé par un formateur) et j'ai des erreurs de format dans la colonne des dates. En effet, je constate qu'à l'importation des dates à l'origine de format jj/mm/aaaa sont converties en format mm/jj/aaaa, ce qui fait que la date du 07/03/06 devient 03/07/06. Le système ne pouvant pas convertir une date telle que 28/02/06, il le conserve en format standard. Donc dans une même colonne j'ai du format date et du format standard, ce qui provoque des incohérences et je n'arrive pas à uniformiser le format de ma colonne.
Lorsque je fais l'importation manuellement, tout se passe bien.
Il y a donc un problème dans la macro, mais je n'ai pas les connaissances pour réparer l'erreur.
Le service maintenance de notre interface "progress" nous dit qu'il faut intégrer dans la macro le mode BINARY au lieu du mode ASCI. Je veux bien mais je ne sais pas faire.
Si quelqu'un est intéressé pour se pencher sur mon problème, je peux envoyer mon code VBA sur le forum.
Merci d'avance à ceux et celles qui m'aideront.
Cordialement
Catherine
Bonsoir,
|
Bonsoir,
Sub Importation_bis()
' Importation Macro
' Macro enregistrée le 27/06/2006 par SERMA
' modif ODVJ le 15/10/2006
Dim MonFichier As Variant
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier <> False Then
'le 2ème argument de chaque array du fieldinfo a pour signification :
'==== 9 : colonne non distribuée
'==== 3 : date au format J/M/A
'==== 1 : format standard
'local=:True permet d'utiliser les paramètres internationaux du système
'c'est ce qui doit régler ton pb
Workbooks.OpenText Filename:=MonFichier, Origin:=xlWindows, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 4), Array(17 _
, 9), Array(20, 9), Array(25, 9), Array(29, 1), Array(34, 1), Array(48, 9), Array(83, 9), _
Array(89, 1), Array(124, 1), Array(141, 1), Array(158, 1), Array(179, 9)), _
TrailingMinusNumbers:=True, local:=True
'ActiveSheet.Move Before:=Workbooks("Traitement global.xls").Sheets(1)
'recupere le n° de la ligne courante
Nblig = ActiveCell.SpecialCells(xlLastCell).Row
Range("A1").Select
'suppression des lignes différentes d'une date
i = 1
While i <= Nblig
If Not (IsDate(Cells(i, 1))) Then
Cells(i, 13).EntireRow.Delete
Nblig = Nblig - 1
Else
i = i + 1
End If
Wend
Range("A1").Select
'lancer la macro de fusion des comptes
FusionneCompte
'lancer Ajout en tête
AjoutEntete
End If
End Sub
Voilà. Pour tester cette procédure, j'aurais eu besoin de quelques lignes de tes données.
à toi de tester donc. A+ |
Bonjour,
|
Bonjour,
|
Bonsoir,
|
http://cjoint.com/?kptFISgdpE
|
Bonjour,
|
Bonjour,
http://www.excel-downloads.com/forum/forum-excel/ http://www.cathyastuce.com/w-agora/index.php?site=cathyastuce http://forum.hardware.fr/hardwarefr/Programmation/VBVBAVBS/liste_sujet-1.htm www.veriti.net |
Bonour,
|
Bonsoir,
|
Bonsoir,
For i = 1 To Nblig
If IsDate(Cells(i, 1)) And IsNumeric(Cells(i, 12)) Then
Cells(i, 13).Value = "X"
Else
Cells(i, 13).Value = Empty
End If
Next i
là, on garde (ie on met un "X" en colonne 13) ce qui est date en première colonne et numérique en 12ème
le premier cas (je pense qu'il ne t'intéresse pas) se règlerait par le code suivant : For i = 1 To Nblig
If IsDate(Cells(i, 1)) Then
Cells(i, 13).Value = "X"
If Not (IsNumeric(Cells(i, 12))) Then Cells(i, 12) = Empty
Else
Cells(i, 13).Value = Empty
End If
Next i
méfiance cependant si le champs d'accueil n'accepte pas les valeurs vides (empty). il faudrait alors plutôt mettre un 0. A+ |