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 Sub

Seul reste à adapter le nom de l'onglet O...

Super merci, c'est exactement ce que je voulais

Rechercher des sujets similaires à "insertion conditionnelle txt"