Format données importées

KIM

XLDnaute Accro
Bonjour le Forum,
Il y a des fois où tout se passe bien et d'autres on s'arrache les cheveux. Et là j'ai besoin de vous et vous en remercie.
J'importe des fichiers texte régulièrement contenant des données financières. J'ouvre le fichier texte, je fais manuellement un copier-coller vers le fichier import1 sans probleme. Je peux lancer toutes les opérations de calcul.
J'essaye alors d'automatiser l'importation de ce fichier text. Une semaine sans resultat. J'ai toujours les données inexploitables et je n'arrive pas à récupérer correctement les colonnes chiffres. Ces colonnes se transforment en données texte et je n'arrive pas à les formater. Merci de m'aider à trouver le moyen d'importer automatiquement le(s) fichiers texte, de formater correctement les données chiffres pour les exploiter normalement.
Ci-joint un extrait de mes données text et la macro d'importation.
Merci d'avance
Amicalement [file name=EXT_KIM.zip size=18446]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EXT_KIM.zip[/file]
 

Pièces jointes

  • EXT_KIM.zip
    18 KB · Affichages: 29

sally

XLDnaute Nouveau
j'ai consulter votre tableau voilà ce qu'il faut faire:
1/selectionner la collonne sujet de calcul
2/dans menu aller à Données puis, Convertir puis cliquer sur largeur fixe puis cliquer sur terminer.
je l'ai vérifié, les calculs se font après cette opération
 

KIM

XLDnaute Accro
Bonjour PierrJean, Sally et le forum,
Merci d'avance,
@Pierrjean,
Le separateur est la virgule. Peux-tu faire la somme d'une colonne?
@Sally,
Effectivement les calculs se font après l'opération que tu m'as indiqué. Mais pourqoui faut-il passer par là?
De ma part il faut que j'arrive à automaiser l'importation des données et le formatage des colonnes via une macro surtout quand il y a beaucoup de données à traiter. Est-ce possible?
Amicalement
KIM
 

KIM

XLDnaute Accro
Re, PierreJean, Sally et le forum,
La manip manuelle donnée par Sally fonctionne. J'ai eqssayé de l'automatiser avec l'enregistreur de macro et j'ai modifié ma macro d'importation et j'ai toujours le meme probleme.
Voila ma modif:

'Formatage des résultats
With WS1

.Columns('C:C').TextToColumns Destination:=Range('C1'), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
.Columns('D:D').TextToColumns Destination:=Range('D1'), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
End With
Merci d'avance de votre aide
Amicalement
KIM
 

pierrejean

XLDnaute Barbatruc
re

voila un bout de code pour transformation

Dim cel As Range
For Each cel In Selection
On Error Resume Next
cel = CDbl(cel)
On Error GoTo 0
Next cel

il fonctionne sur l'exemple

je le verrais bien ici:

With Selection
' .Calculate
' .PasteSpecial Paste:=xlFormats
.PasteSpecial Paste:=xlValues
ICI

End With

je n'ais pas testé puisque chez moi le probleme ne se pose pas
 

KIM

XLDnaute Accro
Re, PierreJean, Sally et le forum,
@ Pierrejean, Merci, Ton bout de code fonctionne.
Quelle est la signification de la fonction 'CDbl(cel)'?
Y-a-t-il moyen d'optimiser le code sachant bien qu'il y a des colonnes qui doivent rester de type texte ou standard?

Concernant mes modifs,effectivement c'est incomprehensible pour moi aussi mais c'est le resultat de la procedure indiquée par Sally:
'menu aller à Données puis, Convertir puis cliquer sur largeur fixe puis cliquer sur terminer'
enregistré automatiquement par l'enregistreur de macro.
Amicalement
KIM
 

pierrejean

XLDnaute Barbatruc
re

bonjour Sally

CDbl(cel) c'est la conversion en nombre double du contenu de la celule cel

optimiser est peut-etre possible mais honnetement je ne vois pas

quand a ce qui est incomprehensible c'est que ton code fonctionne parfaitement chez moi et pas chez toi

il y a certainement une piste a creuser du coté des decimales car les nombres entiers passent tous

mais je suis incapable de debugger quand ça marche !!!!

Amicalement
 

KIM

XLDnaute Accro
Re, Merci à vous deux,
Vous m'avez dépanné en attendant une autre personne du forum qui veut bien optimiser le code pour avoir une importation exploitable avec formatage des données.
je travaille avec Excel 2002 SP3.
Amicalement
KIM
 

KIM

XLDnaute Accro
Re, et le forum
@Pierrejean,
Y-a-t-il possibilité d'appliquer la fonction CDbl à des colonnes et non à des cellules?
Cela permet de gagner du temps dans l'execution de la macro et surtout quand tu as 20 colonnes et 10 000 lignes.

Dim cel As Range
For Each cel In Selection
On Error Resume Next
cel = CDbl(cel)
On Error GoTo 0
Next cel


Merci d'avance
Amicalement
KIM
 

KIM

XLDnaute Accro
Bonjour JeanMarie, Pierrejean et le forum,
J'ai testé vos propositions,
Je ne comprend plus rien.
Aucune proposition n'a donné le resultat voulu.
J'ai testé:
For Each cel In Range('D1:D' & Range('D65536').End(xlUp).Row)
On Error Resume Next
cel = CDbl(cel)
Next cel
On Error GoTo 0

Aussi
For Each cel In Range('D:D')
On Error Resume Next
cel = CDbl(cel)
Next cel
On Error GoTo 0

Aussi
Columns('D:D').Select
For Each cel In Selection
On Error Resume Next
cel = CDbl(cel)
Next cel
On Error GoTo 0
Aucune n'a fonctionné. La seule modif qui a transformé les cellules d'une manière exploitable est la 1ere proposition de PierreJean:
Dim cel As Range
For Each cel In Selection
On Error Resume Next
cel = CDbl(cel)
On Error GoTo 0
Next cel

@JeanMarie,
Ta proposition met le bon format. Il n'y a que la première colonne exploitable mais le rest inchageable malgré le bon format.
Je ne comprend plus rien et ce probleme d'importation de données et de formatage me fait perdre beaucoup de temps. J'espère avec votre aide, celle du forum et peut-etre si Thierry ou les specialistes des importations de données puissent m'aider à resoudre definitivement ce probleme. mes données d'origine proviennent de sources différentes et en format texte.
Merci d'avance de votre aide
Bien amicalement
KIM
 

ChTi160

XLDnaute Barbatruc
Salut KIM
peut être peutx tu tenter de formater ta cel en numeric en la multipliant par 1
exemple non testé
cel = CDbl(cel.value * 1)
je suis à la bourre, je rerarderai ce soir si tu n'as pas eu de Solution à ton problème
tu sais @+thierry veille en ce moment Lol donc!!!!

bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 505
Membres
103 565
dernier inscrit
Fabien78