Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tous les fichiers d'un dossier

5 réponses
Avatar
bertrouf
Bonjour,
J'ai un dossier qui contient 300 fichiers excel. Les noms de ces fichiers
correspondent à des noms de personne. Exemple : Martine-Lambert.xls
Je veux récupérer dans un tableau le nom du fichier et sur la seconde
colonne une valeur du fichier.
Pour un seul fichier, ça donnerai ='[Martine-Lambert.xls]Feuil1'!$A$1
mais pour TOUS les fichiers du dossier, de façon flexible, comment puis-je
faire ?

Merci

5 réponses

Avatar
JB
Bonsoir,


répertoire = ActiveWorkbook.Path
Application.ScreenUpdating = False
nf = Dir(répertoire & "*.xls")
i = 2
Do While nf <> ""
Cells(i, 1) = nf
Cells(i, 2).Formula = "='[" & nf & "]Feuil1'!$a$1"
i = i + 1
nf = Dir
Loop

JB
On 15 juin, 19:04, bertrouf
wrote:
Bonjour,
J'ai un dossier qui contient 300 fichiers excel. Les noms de ces fichiers
correspondent à des noms de personne. Exemple : Martine-Lambert.xls
Je veux récupérer dans un tableau le nom du fichier et sur la seconde
colonne une valeur du fichier.
Pour un seul fichier, ça donnerai ='[Martine-Lambert.xls]Feuil1'!$A$1
mais pour TOUS les fichiers du dossier, de façon flexible, comment puis -je
faire ?

Merci


Avatar
G. L
Bonsoir Bertrouf

Une piste parmi plusieurs :

http://frederic.sigonneau.free.fr/code/Fichiers/ScanTousLesFichiers.txt

Bon courage

Gérard


"bertrouf" a écrit dans le message de
news:
Bonjour,
J'ai un dossier qui contient 300 fichiers excel. Les noms de ces fichiers
correspondent à des noms de personne. Exemple : Martine-Lambert.xls
Je veux récupérer dans un tableau le nom du fichier et sur la seconde
colonne une valeur du fichier.
Pour un seul fichier, ça donnerai ='[Martine-Lambert.xls]Feuil1'!$A$1
mais pour TOUS les fichiers du dossier, de façon flexible, comment puis-je
faire ?

Merci


Avatar
LSteph
Bonsoir,
sans aucune macro

on peut utiliser Données Consolider ainsi:

Mettre tous ces fichiers dans un répertoire et un seul qui contient ces
fichiers etuniquement ces fichiers
Ouvrir un classezur vide l'entegistrer en amont.

Données Consolider
source Parcourir
pointe sur un des fichiers du répertoire cible
ça donnerai ='[Martine-Lambert.xls]Feuil1'!$b$2
tu remplace par

'[*.xls]Feuil1'!$b$2
Sous réserve que $b$2 contienne bien une valeur

Puis tu fais ajouter
et coches avec liaisons
Consolider

Une fois les données liées obtenues tu les copies (la colonne)
tu insères (colles) une colonne les cellules copiées.
Tu es sur sélection de cette noouvelle
Recherche et remplace $b$2 par $a$1 (sous réserve que $A$1 contienne
Martine Lambert ou Roger Dupont.)

Ainsi de suite... si tu as besoin de synthétiser dèautres cellules.

Après plus besoin de conso tout reste lié!

Cordialement.

lSteph

Bonjour,
J'ai un dossier qui contient 300 fichiers excel. Les noms de ces fichiers
correspondent à des noms de personne. Exemple : Martine-Lambert.xls
Je veux récupérer dans un tableau le nom du fichier et sur la seconde
colonne une valeur du fichier.
Pour un seul fichier, ça donnerai ='[Martine-Lambert.xls]Feuil1'!$A$1
mais pour TOUS les fichiers du dossier, de façon flexible, comment puis-je
faire ?

Merci


Avatar
PMO
Bonjour,

Ci-dessous un exemple de code qui devrait répondre à votre attente.
Tel quel, il recherche dans "C:" tout les fichiers .xls et affiche en
colonne A leur chemin et nom et en colonne B la formule permettant
d'obtenir la valeur en A1 de chacun d'eux.
Le code commence par la déclaration de constantes que vous pouvez
adapter à vos besoins.
Ex: si le chemin de votre dossier est "c:Dossier dataPersonnes" alors
modifier
la constante
Const DOSSIER_CIBLE As String = "C:"
par
Const DOSSIER_CIBLE As String = "c:Dossier dataPersonnes"

Voici le code à copier.

'*********************
Option Explicit
'### CONSTANTES A ADAPTER ###
Const DOSSIER_CIBLE As String = "C:"
Const FEUILLE_CIBLE As String = "Feuil1"
Const CELLULE_CIBLE As String = "$A$1"
'_________________________________
Sub RecupFichierValeur()
Dim i&
Dim var
Dim A$
Dim B$
Dim R As Range
Dim bool As Boolean
Dim reponse%
With Application.FileSearch
.NewSearch
.LookIn = DOSSIER_CIBLE
.Filename = "*.xls"
If .Execute() > 0 Then
ReDim var(1 To .FoundFiles.Count, 1 To 2)
For i& = 1 To .FoundFiles.Count
var(i&, 1) = .FoundFiles(i&)
B$ = ""
A$ = var(i&, 1)
Do Until Right(A$, 1) = ""
B$ = Right(A$, 1) & B$
A$ = Mid(A$, 1, Len(A$) - 1)
Loop
var(i&, 2) = "='" & A$ & _
"[" & B$ & "]" & _
FEUILLE_CIBLE & "'!" _
& CELLULE_CIBLE & ""
Next i&
Else
MsgBox "Aucun fichier .xls n'a été trouvé"
Exit Sub
End If
End With
Set R = ActiveSheet.UsedRange
If R.Address <> "$A$1" Then bool = True
If R.Cells(1, 1) <> "" Then bool = True
If bool Then
reponse% = MsgBox _
("Les données de la feuille active vont être éffacées." & _
" Voulez-vous continuer ?", vbOKCancel)
If reponse% = vbCancel Then Exit Sub
End If
R.ClearContents
Range(Cells(1, 1), Cells(UBound(var, 1), _
UBound(var, 2))) = var
End Sub
'*********************

Cordialement.

--
PMO
Patrick Morange



Bonjour,
J'ai un dossier qui contient 300 fichiers excel. Les noms de ces fichiers
correspondent à des noms de personne. Exemple : Martine-Lambert.xls
Je veux récupérer dans un tableau le nom du fichier et sur la seconde
colonne une valeur du fichier.
Pour un seul fichier, ça donnerai ='[Martine-Lambert.xls]Feuil1'!$A$1
mais pour TOUS les fichiers du dossier, de façon flexible, comment puis-je
faire ?

Merci


Avatar
bertrouf
Merci, c'est une très bonne proposition.
Ca dépasse ma demande, parce que je peux le rendre utilisable par mes
utilisateurs lambda.

on peut utiliser Données Consolider