Récupérer les données d'un fichier texte dans Excel

Bonjour, mon problème étant résolu mais essayant d'appliquer cette macro pour un usage quasiment pareil j'aurai besoin de quelques précisions sur certains terme.

Workbooks.OpenText Filename:= _

Nomfichierentree, Origin:=xlMSDOS, _

StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(10 _

, 1), Array(19, 1), Array(31, 1), Array(43, 1), Array(55, 1), Array(67, 1), Array(79, 1)), _

TrailingMinusNumbers:=True

Peux tu m'expliquer comment on choisi les numéro à mettre entre parenthèse ( 0,1), (10_1) ... car pour le nouveau fichier que je dois copié la mise en forme des colonnes et différentes et je n'arrive pas à l'adapté.

With ActiveWorkbook

'Renvoi la dernière adresse absolue de la plage utilisée

'Range("A1").SpecialCells(xlCellTypeLastCell).Address

S = "A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address

ActiveSheet.Range(S).Copy

Pourrai tu me détailler un peu plus se passage ?

Merci d'avance

Re,

Question 1 : la touche F1 pourrait très bien t'aider.

Dans le code tu sélectionne le mot OpenText (double-clic dessus)

Ensuite tu tape F1.

Mais je pense que ce serra un peu compliquer pour comprendre.

Le plus simple c'est de faire une macro automatique et ensuite d'en retirer ce que tu a besoin.

Question 2 : : Comment expliquer autrement

Renvoi la dernière adresse absolue de la plage utilisée

Peut-être la dernière ligne et la dernière colonne de la dernière cellule.

Sert toi des points d’arrêt pour avoir le contenu des variables

ET..

ET...

A+:

Pour la question deux je me suis mal exprimé.

S = "A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address

J'ai compris le but de cette phrase mais pourquoi tu mais un & ?

Dans le nouvelle exemple que je traite il n'arrive pas à trouver la dernière adresse absolue, j'ai une quinzaine de colonne et il en sélectionne seulement 2 ?

Je voudrais remplacer S = "A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address par quelque chose du style:

Range("A1").Select

S= Range(Selection, Selection.End(xlToRight)).Select & Range(Selection, Selection.End(xlDown)).Select

Es ce possible ?

Merci d'avance pour toutes t'es informations.

Le problème n'est certainement pas dans cette sélection, C'EST TOUJOURS BON.

Tu n'est probablement pas sur la bonne feuille quand S est initialiser.

Assure-toi de sélectionner le bon classeur et la bonne feuille avant.

A+

Sub CopierCSV()

Dim Nomfichierentree As String, S As String

'Empèche les messages comme Pas sauver.. Le presse papier est rempli etc..

Application.DisplayAlerts = False

'Supprime le rafraichissement de l'écran pour accélérer le processus

Application.ScreenUpdating = False

'Attend le chemin complet et le nom du fichier txt.

Nomfichierentree = Application.GetOpenFilename("Fichier Csv (*.csv), *.csv")

If Nomfichierentree = "Faux" Then Exit Sub 'cliquer sur annuler

'Ouvre le fichier texte en séparant les colonnes avec les espaces.

Workbooks.OpenText Filename:=Nomfichierentree, local:=True

'copies des données

With ActiveWorkbook

'Renvoi la dernière adresse absolue de la plage utilisée

'Range("A1").SpecialCells(xlCellTypeLastCell).Address

S = "A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address

ActiveSheet.Range(S).Copy

'Ferme le classeur texte mais les données sont dans le presse-papier

.Close

End With

Range("A1").Select

'Met les données du presse-papier sur la feuille active (celle avec le bouton)

ActiveSheet.Paste

'Rétabli les fonction de messages d'alertes.

Application.DisplayAlerts = True

End Sub

J'ai suivi la même procédure que tu as utilisé pour mon fichier texte, quand je fais la macro pas à pas il est bien dans le bon classeur et sur la bonne feuille.

J'avais eu le même problème avec mon fichier texte quand j'avais fait un copié coller de ta macro la première fois.

poste ton fichier csv.

Ton import ne fonctionne probablement pas

tu a le ruban Développeur ?

lermite a écrit :

poste ton fichier csv.

Ton import ne fonctionne probablement pas

Autant pour moi, je viens de comprendre une grande partie de mais erreur. Je copié les macros dans les feuilles des classeurs au lieu de les collées dans les modules.

Peux tu me dire comment on sait ou il faut coller les macros ? (module ou feuille)

J'arrive maintenant à copié toutes les données mais il me change le format de certaines cellules pendant la copie ? Dans la dernière colonne il me mais des nombres alors que je veux que les cellules reste en format standard.

Sa peut venir de quoi ?

40test.zip (14.02 Ko)

Ce n'a pas été facile à trouver l'astuce pour les cellules à remettre en mode standard.

Le fichier csv n'a de csv que l’extension, il ne ressemble en rien à ce genre de fichier.

Avec quel appli est-il créer ?

Enfin bref, je crois que ça va te convenir.

A+

EDIT : Quand une macros ne traite que des cellules d'une feuille ça peu se trouver dans le module de cette feuille.

Quand la macros traite de différente feuilles ou différent classeurs elle doit OBLIGATOIREMENT se trouver dans un module général genre Module1

49yoda-v3.xlsm (24.39 Ko)

Merci pour toutes t'es informations.

Alors le fichier csv est créer à partir d'un logiciel qui permet de récupérer des données de nos machines ( éoliennes ...)

J'ai essayé ta macro mais le problème est toujours présent ? En effet le problème n'a pas l'air simple à résoudre.

Le fichier à toujours la même configuration. ?

Tu a tester avec le même fichier que tu à poster. ?

Si oui, je vois pas pourquoi ça fonctionne chez moi et pas chez toi ? réessaye.

A+

Rechercher des sujets similaires à "recuperer donnees fichier texte"