• Initiateur de la discussion Initiateur de la discussion drisou
  • Date de début Date de début

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 !

drisou

XLDnaute Occasionnel
bonsoir le forum,
voila ,ça fait 3 jours que je me prends la tête a essayer de faire une macro en m'aidant de l'enregistreur mais je n'arrive pas a faire ce que je veux , je sollicite donc votre aide pour y arriver.
je m'explique , je souhaiterais depuis excel créer une macro pour importer des fichiers textes, ,(délimiter et point virgule)
et coller ses fichiers textes dans excel dans la cellule active .
étant donnés que les fichiers textes que j'importe chaque jours ont des noms différents.
car j'ai trouver une macro qui me fait çà, mais elle ne me les importes pas comme je veux (délimiter et point virgule). que j'ai mis dans un fichier ci-joint
je vous remercie pour vos réponses.
 

Pièces jointes

Re : importer texte

Bonsoir,
Essaie en ajoutant la ligne verte (Pas des Vosges 😀) à ton code
Sub Fichier_TXT_import()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True
End Sub
A+
kjin
 
Re : importer texte

Merci kjin , c'est exactement ce que je voulais , j'ai mis le code dans un module d'un fichier qui s'appelle" 01 dec08"
et comme chaque jour j'ai un fichier different dans lequel j'importe des fichiers textes, a chaque fois que je lance la macro depuis un bouton , il m'ouvre d'abord le fichier "01 dec08" pour lancer la macro dans le fichier que je veux.
comment faire pour lancer la macro directement dans le fichier que je veux sans ouvrir le fichier"01dec08"
Merci
 
Re : importer texte

re, au fait c'est bon j'ai mis ça en macro complémentaires, et ça a l'air de marcher.

lorsque j'importe mon fichier texte j'ai des données de 8 lignes sur 6 colonnes
et sur la dernière ligne en colonne "c" j'ai soit un "8" soit un "4".
lorsque c'est le chiffre "8" je souhaiterais qu'il change en chiffre"9" , j'ai une macro pour changer ce chiffre mais (voir code en dessous), je sais pas faire pour mettre la condition , donc que soit soit 8 ou 4 il me change quand même en 9.
Merci encore.

Sub Fichier_TXT_import()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True
ActiveCell.Offset(-1, 3).Select
ActiveCell.FormulaR1C1 = "9"
ActiveCell.Offset(1, -6).Select

End Sub
 
Dernière édition:
Re : importer texte

Bonjour,
J'allais te proposer la solution de l macro complémentaire ..mais c'est déjà fait !
Pour la modif, si tu es sûr que c'est toujours la dernière ligne que tu dois modifier
Sub Fichier_TXT_import()
...le reste du code
Close
Application.ScreenUpdating = True
If ActiveCell.Offset(-1, 2).Value = 4 Or ActiveCell.Offset(-1, 2).Value = 8 Then
ActiveCell.Offset(-1, 2).Value = 9
End If
End Sub
A+
kjin
 
Re : importer texte

bonsoir kjin, le forum.

il y'a quelque chose qui me tracasse ,j'ai passé le week-end a essayer de trouver la solution , en vain.
lorsque j'importe mes fichiers textes , je recupere des donnés que j'aditionne , mais ces données sont dans ce format ex: ( 95.00) et la impossible de faire une opération car j'obtiens toujours 0 en aditionnant.

pourtant le format de mes cellules sont au format standard, j'ai essayer aussi au format nombre,texte ,spécial, personnalisé.
j'ai pris le fichier excel ou j'importe les fichiers , je l'ai essayer sur un autre poste au boulot c'est le poste d'un collegue qui n'est plus la et se chargeait de faire ce travail d'importer des donnée textes vers excel. et la impeccable quand j'importe j'ai (95) et pas ( 95.00) et je peux donc faire des opérations.

pourtant c'est ce même fichier que j'ai utilisé initialement sur mon PC.
j'ai fait exactement les memes manipulations sur les 2 pc pour l'import du fichier texte.

il n'y pas de macro sur son pc.
alors je pense que ca doit venir d'un paramètre de config dans excel que je trouve pas .
auriez vous une idée de ce que çà pourrait être?
Merci pour vos réponses
 
Re : importer texte

Bonjour,
Sans doute du aux paramètres Windows
Le plus simple est de remplacer le point par une vigule au moment de l'import
(ligne en vert).
Sub Fichier_TXT_import()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.Replace What:=".", Replacement:=","
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True
End Sub
A+
kjin
 
Re : importer texte

bonsoir kjin, le forum
encore 2 choses ensuite je pense que ce sera parfait pour moi,
kjin dans le code que tu m'a donné au fait c'est lorsque le dernier nombre de la colonne est 8 alors le changer en 9. et si il est 4 alors ne rien faire.

j'ai effacer "If ActiveCell.Offset(-1, 2).Value = 4 Or". ça a l'air de marcher.
sinon l'idéal pour moi c'est, si c'est le chiffre 4 alors recopier cette même ligne( la dernière ligne) la coller ligne en dessous,de cellule "A a F"
et changer le 4 en 9 sur la nouvelle ligne recopié, c'est a dire la dernière ligne.

et je voudrai aussi savoir ,car la actuellement j'importe les fichiers texte un par un ,si il est possible d'en importer plusieurs en même temps , de façon que les données des fichiers textes s'insèrent les uns après les autres dans ma feuille excel.

avec tout ca je pense que la boucle sera bouclé.

Merci encore pour vos réponses.
 
Dernière édition:
Re : importer texte

Bonjour,
Plusieurs choses :
- tu ne précises pas si la condition "=8" de la colonne "C" restait valable, donc je l'ai laissée, il suffit de supprimer les lignes vertes dans le cas contraire
- par défaut, la macro cherche les fichiers dans le répertoire courant càd le celui du classeur actif, mais on peut évidemment le changer
- j'ai considéré que dans ce répertoire on importait l'ensemble des fichiers ayant l'extension ".txt" sans distinction de nom (par exemple tous ceux dont le nom commence par X), ce qui n'est peut-être pas souhaitable mais sans plus d'infos...?
Sub Fichier_TXT_import2()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Set Fs = Application.FileSearch
With Fs
.LookIn = ActiveWorkbook.Path & "\"
.Filename = "*.txt"
.Execute
For i = 1 To .FoundFiles.Count
Lecture = FreeFile()
Open .FoundFiles(i) For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.Replace What:=".", Replacement:=","
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1).Activate
End If
Compteur = Compteur + 1
Loop
Close
If ActiveCell.Offset(-1, 2).Value = 8 Then
ActiveCell.Offset(-1, 2).Value = 9
End If

If ActiveCell.Offset(-1, 2).Value = 4 Then
Range(ActiveCell.Offset(-1, 0), ActiveCell.Offset(-1, 4)).Copy
ActiveCell.Insert Shift:=xlShiftDown
Application.CutCopyMode = False
ActiveCell.Offset(0, 2) = 9
ActiveCell.Offset(1).Activate
End If
Next i
End With
Application.ScreenUpdating = True

End Sub
A+
kjin
 
Dernière édition:
Re : importer texte

bonjour kjin , le forum.
c'est vrai je n'ai pas précisé pour le 8 , tu as bien fait, car je garde la condition .
la macro ne se lance pas ,c'est certainement parce que les fichiers que j'importe sont pas au bon endroit.
l'adresse exact de mon dossier ou se trouve mes fichiers textes est: c:/fichiers textes.
par contre je souhaiterais en importer plusieurs en même temps , mais en gardant le choix de ce que je veux importer.

Merci kjin.
 
Re : importer texte

Re,
On pourrait pas faire un tir groupé ? 😀
J'avais cru comprendre ouverture auto sans passer par la boite de dialogue 🙄
Maintenant, si tu veux avoir le choix, j'ai remis la boite de dialogue, il suffit de sélectionner ton répertoire et de maintenir la touche CTRL enfoncée en sélectionnant les fichiers à ouvrir.
Sub Fichier_TXT_import3()
Dim Resultat
Dim Chemin()
Dim Fich As Integer
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename("Fichiers Texte,*.txt", , , , True)
For Fich = 1 To UBound(Chemin)
Lecture = FreeFile()
Open Chemin(Fich) For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.Replace What:=".", Replacement:=","
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
If ActiveCell.Offset(-1, 2).Value = 8 Then
ActiveCell.Offset(-1, 2).Value = 9
End If
If ActiveCell.Offset(-1, 2).Value = 4 Then
Range(ActiveCell.Offset(-1, 0), ActiveCell.Offset(-1, 4)).Copy
ActiveCell.Insert Shift:=xlShiftDown
Application.CutCopyMode = False
ActiveCell.Offset(0, 2) = 9
ActiveCell.Offset(1).Activate
End If
Next
Application.ScreenUpdating = True
End Sub
A+
kjin
 
- 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
2
Réponses
28
Affichages
2 K
Deleted member 441486
D
Retour