Insertion conditionnelle d'un .txt dans une cellule
Bonjour,
J'ai un fichier excel avec une liste de valeurs dans la colonne A.
Ces valeurs correspondent à des noms de fichiers texte (sans le .txt) stockés dans un même dossier.
Je voudrais créer une macro qui parcours la colonne A et qui pour une valeur en Ai va chercher le contenu du fichier texte dons le nom correspond à la valeur et insère l'ensemble de son contenu dans la cellule Bi.
Pour l'instant j'ai trouvé une macro qui insère en B1 le contenu d'un fichier texte que l'on sélectionne à l'ouverture d'une fenêtre:
Sub LireFichierTexte()
Dim Texte As String
Dim Ligne As String
Dim Index As Integer
Dim Chemin
On Error GoTo LigneErreur
Chemin = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt")
If Chemin <> False Then
Index = FreeFile
Open Chemin For Input As #Index
Do While Not EOF(Index)
Line Input #Index, Ligne
If Texte = "" Then
Texte = Ligne
Else
Texte = Texte & vbCrLf & Ligne
End If
Loop
Close #Index
[Bi] = Texte
End If
Exit Sub
LigneErreur:
MsgBox "Erreur !"
End Sub
Au final je voudrais une macro qui ne nécessite pas une sélection de fichier via une fenêtre, mais plutôt quelque chose d'automatique.
Je vous remercie pour votre aide
Bonjour Cortal, bonjour le forum,
Le code que tu as mis est totalement inconnu pour moi mais la proposition ci-dessous semble fonctionner. La différence est que j'ai supprimé la gestion des erreurs car, dans la boucle, je ne savais pas comment l'utiliser :
Sub Macro1()
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim F As String 'déclare la variable F (Fichier)
CA = ThisWorkbook.Path 'définit le chemin d'accès CA
Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
For Each CEL In O.Range("A1:A" & DL) 'boucle sur toutes les cellules éditées CEL de la colonne A
If CEL.Value <> "" Then 'condition 1 : si la cellule n'est pas vide
F = Dir(CA & "\*.txt") 'définit le premier fichier texte F contenu dans le dossier ayant CA comme chemin d'accès
Do While F <> "" 'boucle tant qu'il existe des fichiers
If F = CEL.Value & ".txt" Then 'condition 2 : si le nom du fichier est égal à la valeur de CEL plus l'extention ".txt"
Index = FreeFile
Open F For Input As #Index
Do While Not EOF(Index)
Line Input #Index, Ligne
If Texte = "" Then
Texte = Ligne
Else
Texte = Texte & vbCrLf & Ligne
End If
Loop
Close #Index
O.Cells(CEL.Row, 2).Value = Texte 'renvoie dans la cellue CEL décalée d'une colonne à droite la variable "Texte"
Texte = "" 'efface le contenu de la variable "Texte"
End If 'fin de la condition 2
F = Dir 'redéfinit le fichier F (prochain fichier texte du dossier ayant CA comme chemin d'accès)
Loop 'boucle
End If 'fin de la condition 1
Next CEL 'prochaine cellule de la boucle
End SubSeul reste à adapter le nom de l'onglet O...
Super merci, c'est exactement ce que je voulais