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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 <bertr...@discussions.microsoft.com>
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 ?
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 ?
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 ?
"bertrouf" <bertrouf@discussions.microsoft.com> a écrit dans le message de
news:2B3A841D-9D87-4AE2-9F14-76508C1AEB99@microsoft.com...
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 ?
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
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
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 ?
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
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
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 ?
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
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
Merci, c'est une très bonne proposition.
Ca dépasse ma demande, parce que je peux le rendre utilisable par mes
utilisateurs lambda.