ouverture de fichier texte

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 !

romainchu78

XLDnaute Occasionnel
Bonjour a tous,
J'ai realise un code vb pour l'ouverture et le traitement de donnees issue d'un fichier texte, mais je n'arrive pas a le configurer totalement avec ce que je veux. je m'explique. Jai un bouton vb dans une feuille excel, quant je clique dessus, voici ce qui se passe:
-creation auto d'une feuille excel "temp".
-ouverture d'une boite de dialogue invitant l'utilisateur a choisir un fichier text a charger.
(la, l'utilisateur choisi son fichier text)
- copie auto des donnnes du fichier text dans la feuille excel "temp".
- creation auto d'une autre feuille excel appele "AC1".

au final jai donc d'ouvert: 2 feuilles excel "temp" et "AC1" et un fichier text


Ce que je voudrais en fait:
- la boite de dialogue s'ouvre vers le repertoire "mes documents" (actuellement elle est configure par default pour s'ouvrir sur le bureau).
- une fois que le contenu du fichier text est copie dans la feuille excel "temp", je voudrais fermer automatiquement ce fichier text.
- Renommer la nouvelle feuille "AC1" par le nom du fichier text.

au final je voudrais avoir d'ouvert: 2 feuilles excel "temp" et "nom du fichier text"

jai passe plusieur heures a essayer de resoudre ce probleme en vain. j'apprecierais une aide exterieur. merci d'avance.

:0)......
 
Re : ouverture de fichier texte

Desole pour le doublons (ca ne se reproduira plus, je me suis explique dans l'autre message).

ok thierry jai vu le fichier que tu as fait pour Dilack. Cela ressemble a ce que je veux mais pas tout a fait.
jai un fichier excel origin qui contient un bouton vb pour activer la macro.
la macro lance la boite de dialogue pour que l'utilisateur choisisse son fichier text.
une fois le fichier text ouvert, la macro cree une feuille excel dans le fichier excel origin (celle avec le bouton) cette nouvelle feuille excel, prend le meme nom que le titre du fichier text ouvert.
ensuite copie du contenu du fichier text vers la feuille du fichier excel origin.
et pour finir fermeture auto du fichier text sans message de sauvegarde.
voila...
 
Dernière édition:
Re : ouverture de fichier texte

Re-
Pour illustrer ma requette, je met a disposition un fichier zip avec le fichier excel d'origine avec la macro et le fichier excel final (qui est cense etre le premier fichier mais jai cree deux fichiers pour bien montrer) et un fichier text cobaye.

tout est explique dans le premier fichier. je narrive pas modifier mon code actuel...

Un grand merci a ceux qui voudront m'aider...
 

Pièces jointes

Re : ouverture de fichier texte

Bonjour RomainChu78, le Forum


J'ai un peu regardé ces fichiers, voici un code qui "grosso-modo" devrait répondre à toutes tes attentes... Par contre je n'initialise plus tes Variables "TEST" et "ValTestOpen" car je ne vois pas leur utilité dans la partie que tu as transmise.

Par ailleurs je n'ai pas trop compris pourquoi tu voulais le retour des données du fichier TXT dans la feuille "AC11" étant donné que tu veux faire renommer une autre Feuille avec le nom de ce fichier TXT (j'ai, par ailleurs horodaté ce nom pour éviter un bug en cas de doublon de noms d'onglets pendant mes tests...

Code:
Option Explicit
Private Const WSCible As String = "AC11"
Sub Import_TXT()
Dim FileToOpen As Variant
Dim ScrHst As Object
Dim WhereIsMyDocuments As String
Dim WBtxt As Workbook
Dim WBCible As Workbook
Dim TheCurDir As String
TheCurDir = CurDir
Set WBCible = ThisWorkbook
WBCible.Worksheets(WSCible).Cells.Clear
Set ScrHst = CreateObject("WScript.Shell")
WhereIsMyDocuments = ScrHst.SpecialFolders("MyDocuments")
ChDir WhereIsMyDocuments

    FileToOpen = Application.GetOpenFilename(FileFilter:="TXT Files (*.txt), *.txt")
    If FileToOpen = False Then Exit Sub
    
 Application.ScreenUpdating = False
  Workbooks.OpenText FileName:=FileToOpen, _
                           Origin:=xlWindows, _
                           StartRow:=5, _
                           DataType:=xlDelimited, _
                           OtherChar:="|"
Set WBtxt = ActiveWorkbook
ActiveSheet.Cells.Copy Destination:=WBCible.Worksheets(WSCible).Range("A1")
WBCible.Worksheets(WBCible.Worksheets.Count).Name = Left(WBtxt.Name, Len(WBtxt.Name) - 4) & "_" & Format(Now, "YYMMDDHHMMSS")
WBtxt.Close False
ChDir TheCurDir
End Sub

Bonne Journée
@+Thierry
 
Re : ouverture de fichier texte

Re Bonjour Romain, le Forum

Pourrais-tu être plus Explicite ?

Quel message d'Erreur ? (Numéro, Description)
Quelle ligne de Code Incriminée ?

Par avance merci

Bon Aprèm

@+Thierry
 
Re : ouverture de fichier texte

non c'est moi qui te remercie...
Alors voila en piece jointe, le fichier qui contient ton code, le probleme intervient a la ligne: "wbcible.worksheets(ws..." et le message d'erreur est "subscript out of range".

par contre est-il trop de te demander de refaire le code mais en integrant cette fois ci mes autres lignes de codes. par exemple laisser la feuille AC11. et laissant l'initialisation des Variables "TEST" et "ValTestOpen", etc... en fait je voudrais integrer ton code dans le mien, donc si je touche trop a mon code actuelle, les autres fonctions ne marcheront plus. les autres lignes de codes nont pas de sens directement dans la fonction openfile mais en ont pourle reste de mon programme. C'est une vrai usine a gaz.
merci de ta comprehension (jaurai pu te le dire plus tot...sorry)
bonne journee
 

Pièces jointes

Re : ouverture de fichier texte

RE Romain, le Forum

C'est normal, ta Feuille "AC11" n'existe pas dans le fichier que tu as mis en ligne... D'où l'erreur "subscript out of range"...

Revoilà le code modifié....


Code:
Option Explicit
Private Const WSCible As String = "AC11" [COLOR=red][B]'NB IL FAUT QUE LA FEUILLE AC11 EXISTE !!!!"[/B]
[/COLOR]Public ValTestOpen As Byte
 
Sub Import_TXT()
Dim FileToOpen As Variant
Dim ScrHst As Object
Dim WhereIsMyDocuments As String
Dim WBtxt As Workbook
Dim WBCible As Workbook
Dim TheCurDir As String
Dim TEST As Long
TheCurDir = CurDir
 
Set WBCible = ThisWorkbook
WBCible.Worksheets(WSCible).Cells.Clear
Set ScrHst = CreateObject("WScript.Shell")
WhereIsMyDocuments = ScrHst.SpecialFolders("MyDocuments")
ChDir WhereIsMyDocuments
    FileToOpen = Application.GetOpenFilename(FileFilter:="TXT Files (*.txt), *.txt")
If FileToOpen = False Then
    ValTestOpen = 0
Else
    ValTestOpen = 1
 
    Application.ScreenUpdating = False
    Workbooks.OpenText Filename:=FileToOpen, Origin:=xlWindows, StartRow:=5, DataType:=xlDelimited, OtherChar:="|"
 
    Set WBtxt = ActiveWorkbook
    ActiveSheet.Cells.Copy Destination:=WBCible.Worksheets(WSCible).Range("A1")
    WBCible.Worksheets(WBCible.Worksheets.Count).Name = Left(WBtxt.Name, Len(WBtxt.Name) - 4) & "_" & Format(Now, "YYMMDDHHMMSS")
    WBtxt.Close False
 
            Do While TEST = 0 Or ActiveCell = ""
                ActiveCell.Offset(1, 0).Select
                If ActiveCell.Value = "__________________________________________" Then
                   ActiveCell.Value = "FIN"
                   TEST = 1
                End If
            Loop
 
End If
ChDir TheCurDir
MsgBox "La Valuer de ValTestOpen est " & ValTestOpen & vbCrLf
End Sub

Bonne Fin d'Aprèm

@+Thierry

 
Re : ouverture de fichier texte

ok le probleme de la feuille AC11 est resolu mais un autre probleme du a mon code annexe vient foutre le bazarre...
ce que je propose: recreer un fichier excel en eliminant le plus possible de codes de maniere a avoir le minimum. et si tu le veux bien, tu pourra le mettre a jour.
ensuite je me chargerais de l'incorporer avec le reste de mon code.
tu trouvera en piece jointe les fichiers.

merci pour ta patience...allez on est pret du but...enfin jespere.
 

Pièces jointes

Re : ouverture de fichier texte

Re Bonjour Romain

Ce coup-ci je ne comprends plus rien !!! lol

Dans mon premier code posté ce matin, je n'ai laissé que l'essentiel pour correspondre à ton désirata...

Cette Partie du Code :
Code:
Dim ScrHst As Object
Dim TheCurDir As String
 
TheCurDir = CurDir
 
Set ScrHst = CreateObject("WScript.Shell")
WhereIsMyDocuments = ScrHst.SpecialFolders("MyDocuments")
ChDir WhereIsMyDocuments
 
...
 
ChDir TheCurDir
En application de ta demande : "la boite de dialogue s'ouvre vers le repertoire "mes documents" (actuellement elle est configure par default pour s'ouvrir sur le bureau)."


Cette Partie du Code :
Code:
 WBCible.Worksheets(WBCible.Worksheets.Count).Name = Left(WBtxt.Name, Len(WBtxt.Name) - 4) & "_" & Format(Now, "YYMMDDHHMMSS")
En application de ta demande : "une fois le fichier text ouvert, la macro cree une feuille excel dans le fichier excel origin (celle avec le bouton) cette nouvelle feuille excel, prend le meme nom que le titre du fichier text ouvert"...


Cette Partie du Code :
Code:
Workbooks.OpenText Filename:=FileToOpen, _
                                 Origin:=xlWindows, _
                                 StartRow:=5, _
                                 DataType:=xlDelimited, _
                                 OtherChar:="|"
 
Set WBtxt = ActiveWorkbook
ActiveSheet.Cells.Copy Destination:=WBCible.Worksheets(WSCible).Range("A1")
 
...
WBtxt.Close False
En application de ta demande : "ensuite copie du contenu du fichier text vers la feuille du fichier excel origin. et pour finir fermeture auto du fichier text sans message de sauvegarde"

Là dans ton dernier zip tous ces codes ont été supprimés...
Tu demandes quoi au juste ? Car là on régresse plutôt qu'autre chose !!!

Bonne Fin de Journée

@+Thierry
 
Re : ouverture de fichier texte

Thierry,
jai repris mon code et le tiens, je m'y retrouve. desole pour la confusion.
jai une derniere requette concernant le transfert de nom:
grace a une de tes phrases de code jai maintenant la possibilite de stocker le titre du workbook actif dans une variable.
"nomfichier22 = ActiveWorkbook.Name"
Par exemple si le workbook s'appel "test.txt", ma variable "nomfichier22" prendra la valeur "test.txt".

mais en realite je ne veux que "test" et non pas ".txt".
donc ma question est la suivante: comment enlever l'extention ?

PS: jai essaye de bricoler un truc avec ceci:
"WBCible.Worksheets(WBCible.Worksheets.Count).Name = Left(WBtxt.Name, Len(WBtxt.Name) - 4)" mais en vain.

merci une derniere fois pour tes precieuses reponses.
 
Re : ouverture de fichier texte

Je viens de trouver le truc:
C'est:
"nomfichier22 = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)"
dans ces conditions seul le nom du workbook sera retenu sans l'extension...


Mon programme marche comme je l'ai souhaite...
UN GRAND MERCI A THIERRY...

Ce forum est super...continuez...
 
- 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

Discussions similaires

D
  • Question Question
Réponses
0
Affichages
659
Deleted member 211067
D
Retour