Format cellules personnalisé avant import fichier texte

sophievba

XLDnaute Junior
Bonsoir à tous,

Nouvelle dans l'utilisation des macros et sur ce site, je m'adresse à vous car j'ai besoin d'aide dans un projet VBA.

Je ne suis pas super calée et je m'en excuse par avance.

Mon problème est le suivant.
Je souhaite importer un fichier texte dans excel à l'aide d'une macro, mais en ayant au préalable ouvert une feuille de calcul excel pour lui dire que toutes les cellules sont du texte.

La raison à celà est du au fait que si les cellules ne sont pas au préalable en texte toutes celles qui contiennent des nombres restes en nombre et non pas en texte.

Je ne sais pas si cela est réalisable et encore moins si mon "premier" post est bien compréhensible.

N'hésitez pas à me le faire savoir si je ne m'exprime pas bien :)

Merci à l'avance pour votre aide.

PS : J'ai fait une recherche depuis le moteur de ce site et sur google mais je n'ai rien trouvé qui correspond à ma demande.

Merci encore et bonne soirée à tous.
 

sophievba

XLDnaute Junior
Re : Format cellules personnalisé avant import fichier texte

BHBH,

J'ai ouvert un nouveau classeur, vierge de toutes données, j'ai copié ce bout de code, j'ai renseignée le nom de mon fichier et quand j'execute la macro, il m'ouvre une fenêtre Warning 'Microsoft visual Basic' et dans cette fenêtre le chiffre 400. Quand je fais OK rien ne se passe.

Pierrot 93,

Je vais essayer de suite ton bout de code et te dire ce qu'il en est.

Vraiment merci pour toutes vos suggestions, je me rends compte qu'en plus de cela, je n'y serais jamais arrivée seule.
 

sophievba

XLDnaute Junior
Re : Format cellules personnalisé avant import fichier texte

Re-,


J'essaye d'adapter ce bout de macro mais j'ai une petite question.

Quelle est la différence entre

TextFileFixedColumnWidths

et

TextFileColumnDataTypes

Si tu as deux minutes peux-tu me commenter les lignes de ce code, svp ?

.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTabDelimiter = True
.TextFileColumnDataTypes = Array(2, 2)
.Refresh BackgroundQuery:=False
.Delete

Merci.
 

sophievba

XLDnaute Junior
Re : Format cellules personnalisé avant import fichier texte

Pierrot93,

Quand j'utilise le bout de code je n'ai pas de message d'erreur, je vois la macro s'executer mais il ne m'importe pas les données. Le classeur reste vierge.

Par contre quand je rajoute la ligne

.TextFileFixedColumnWidths = Array(2, 20,10,20)

Cela récupère bien les données du fichier texte, mais toujours avec mon résultat de nombre 1,2346E+17

D'où mon interrogation sur la différence entre les deux lignes de mon post précédent.

Merci.
 

sophievba

XLDnaute Junior
Re : Format cellules personnalisé avant import fichier texte

Le forum, Pierrot93, BHBH,

Mille mercis.
Grâce à vos codes et à force d'adaptation j'obtiens le résultat que je souhaitais.

J'étais vraiment désespérée :p

Si l'un d'entre vous à le temps de m'expliquer à quoi correspond

.TextFileColumnDataTypes = Array(2, 2,) et à quoi servent les 2 je vous en serez très reconnaissante histoire de comprendre le déroulement de la macro.

Merci encore, vous êtes géniaux.
 

Pierrot93

XLDnaute Barbatruc
Re : Format cellules personnalisé avant import fichier texte

Bonjour Sophie, bhbh:)

désolé de n'avoir pu te répondre plus tôt, pour la propriété "TextFileColumnDataTypes", elle permet de définir le type de données qui sera appliqué lors de l'importation. 2 est le type pour du texte, 1 format standard et 9 colonne non dfistribuée. Il existe également plusieurs constantes pour les dates. Ci-dessous la liste :
xlDMYFormat Format de date Jour-Mois-Année
xlDYMFormat Format de date Jour-Année-Mois
xlEMDFormat date EMD
xlMDYFormat Format de date Mois-Jour-Année
xlMYDFormat Format de date Mois-Année-Jour
xlYDMFormat Format de date Année-Jour-Mois
xlYMDFormat Format de date Année-Mois-Jour

Pour répondre à une autre de tes questions, "TextFileFixedColumnWidths" est la propriété qui permet la définition des largeurs de colonne, c'est ce que j'avais appliqué sur la première macro. Utilisé lorsque la propriété "TextFileParseType" est égale à "xlFixedWidth"...

En espérant avoir été clair.

bonne journée
@+
 

sophievba

XLDnaute Junior
Re : Format cellules personnalisé avant import fichier texte

Bonjour le forum, Pierrot93,

Avant toute chose merci beaucoup pour ton aide qui a résolu mon problème.

Merci également pour ces explications très claires qui vont m'aider dans l'apprentissage du VBA que je trouve super pratique.

J'ai une autre interrogation mais je ne sais pas si je dois ouvrir un autre post car l'intitulé ne serait plus le même :eek:

Comment dans cette même macro je peux rajouter comme bout de code "supprimer toutes les lignes dont le terme TOTO n'apparait pas dans la cellule de la colonne F" et dans ce même fichier "supprimer toutes les lignes qui commencent par 1111 dans la colonne D" ? ( et si je peux abuser me mettre des commentaires afin de comprendre ce code)

Merci beaucoup.

Sophie.
 

Pierrot93

XLDnaute Barbatruc
Re : Format cellules personnalisé avant import fichier texte

Bonjour à tous

regarde le code ci-dessous, j'ai essayé de commenter un peu, pour plus d'info, regarde dans l'aide vba, place le curseur sur le mot vba pour lequel tu veux des infos et touche de fonction F1. Entre autre regaarde ce qui est dit sur l'opérateur "LIKE" cela pourra t'éclairer sur les differentes recherches possibles...

Code:
Dim i As Integer
'boucle qui part de la dernière cellule renseignée de la colonne F et l'on
'remonte vers la ligne 1
For i = Range("F65536").End(xlUp).Row To 1 Step -1
    ' si la cellule de la colonne de la ligne i de la colonne F, contient TOTO '
    'ou bien si la cellule de cette même ligne de la colonne D commence par 1111
    'alors la ligne i est supprimée
    If Cells(i, 6).Value Like "*TOTO*" Or Cells(i, 4).Value Like "1111*" Then _
        Rows(i).Delete
Next i

bonne journée
@+
 

sophievba

XLDnaute Junior
Re : Format cellules personnalisé avant import fichier texte

Bonsoir le forum, Pierrot 93,

Merci pour ta réponse.
Pour dire vrai j'avais créé un autre post car je ne savais si je pouvais poser une autre question dans ce même post.

Kjin m'a gentillement aidé et ça fonctionne.
Par contre tes commentaires je les ai sauvegardé, ça me permet de mieux comprendre car ils sont très explicites :).

Je suis trop contente d'avoir fait votre connaissance sur ce site. Vos connaissances VBA m'impressionnent et votre partage de connaissances inspire un très grand respect.

Merci beaucoup et très bonne soirée.

Sophie.
 

technopere

XLDnaute Nouveau
Re : Format cellules personnalisé avant import fichier texte

Bonjour la communautée,

J'ai un peu suivit le problème de Sophie afin d'importer des données a partir d'un fichier texte.

Je profite de ce poste ouvert pour prolonger la discution avec mes deux petits soucis:

(1)Comment pourrait-on faire pour ne pas devoir indiquer le chemin du fichier txt à importer ? Je veux faire balader mes deux fichiers sans devoir changer tous le temps le code. En sachant que ce fichier texte est toujours dans le même répertoire que le fichier xls? Existe-t'il en vb un moyen de récupérer le path du fichier et l'inclure comme variable dans celle "chemin"?

(2) J'aimerais faire un saut de cellule pour toute les "tabulations" qui existe dans mon fichier texte.

EDIT : Pour la question 2, serait-il possible de mettre comme hash : 5 espaces plutot qu'un vbTab? Si oui comment faire?



D'avance un grand merci!
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 688
Membres
103 639
dernier inscrit
NIEMASAFI