OVH Cloud OVH Cloud

Recopier des données d'autres fichiers excel

1 réponse
Avatar
Cham
Bonjour,

Je souhaite récupérer dans un tableau de synthèse, les données d'autres
documents Excel, dont je ne connais pas forcément le nom (donc je le fais
dynamiquement).

Voici mon code:


Sub Infos()
Dim fichier As String

Set fs = Application.FileSearch
With fs
.LookIn = ActiveWorkbook.Path
.FileType = msoFileTypeExcelWorkbooks
.Filename = "Qap*.xls" ' je recherche tous les fichiers commençant par
"Qap"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
RenseigneTableau .FoundFiles(i)
Next i
End If
End With

End Sub



Sub RenseigneTableau(fichier)

ThisWorkbook.Sheets("Récapitulatif équipe").Range("B2") =
Workbooks(fichier).Sheets("Définition").Range("A5")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B3") =
Workbooks(fichier).Sheets("Résultat").Range("C14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B4") =
Workbooks(fichier).Sheets("Résultat").Range("E14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B5") =
Workbooks(fichier).Sheets("Résultat").Range("G14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B6") =
Workbooks(fichier).Sheets("Résultat").Range("I14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B7") =
Workbooks(fichier).Sheets("Résultat").Range("K14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B8") =
Workbooks(fichier).Sheets("Résultat").Range("M14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B9") =
Workbooks(fichier).Sheets("Résultat").Range("O14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B10") =
Workbooks(fichier).Sheets("Résultat").Range("Q14")

End Sub


Je récupère bien la liste de mes fichiers à traiter. Ce qui ne marche pas,
c'est que dans la fonction RenseigneTableau, ma variable fichier contient le
nom complet du répertoire et du fichier, alors que quand je ne mets que le
nom du fichier (mais j'y arrive pas dynamiquement), ça marche.

D'autre part, comment faire pour ne pas avoir à ouvrir manuellement chacun
des fichiers ?

Pour l'instant, toutes mes données sont recopiées dans la même colonne, je
verrai après pour incrémenter les colonnes.

Merci pour votre aide,

Sylvie

1 réponse

Avatar
FxM
Bonjour Sylvie,

si .FoundFiles(i) donne "C:repfich.xls"
dir(.FoundFiles(i)) donne "fich.xls"

Par expérience, tu ferais bien de t'assurer également que .foundfiles(i)
débute bien par le chemin que tu as défini.

chemin = activeworkbook.path
(snip)
.LookIn = chemin
(snip)
if ucase(left(.foundfiles(i),len(chemin)) = ucase(chemin) then
(snip)
end if

@+
FxM


Bonjour,

Je souhaite récupérer dans un tableau de synthèse, les données d'autres
documents Excel, dont je ne connais pas forcément le nom (donc je le fais
dynamiquement).

Voici mon code:


Sub Infos()
Dim fichier As String

Set fs = Application.FileSearch
With fs
.LookIn = ActiveWorkbook.Path
.FileType = msoFileTypeExcelWorkbooks
.Filename = "Qap*.xls" ' je recherche tous les fichiers commençant par
"Qap"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
RenseigneTableau .FoundFiles(i)
Next i
End If
End With

End Sub



Sub RenseigneTableau(fichier)

ThisWorkbook.Sheets("Récapitulatif équipe").Range("B2") =
Workbooks(fichier).Sheets("Définition").Range("A5")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B3") =
Workbooks(fichier).Sheets("Résultat").Range("C14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B4") =
Workbooks(fichier).Sheets("Résultat").Range("E14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B5") =
Workbooks(fichier).Sheets("Résultat").Range("G14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B6") =
Workbooks(fichier).Sheets("Résultat").Range("I14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B7") =
Workbooks(fichier).Sheets("Résultat").Range("K14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B8") =
Workbooks(fichier).Sheets("Résultat").Range("M14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B9") =
Workbooks(fichier).Sheets("Résultat").Range("O14")
ThisWorkbook.Sheets("Récapitulatif équipe").Range("B10") =
Workbooks(fichier).Sheets("Résultat").Range("Q14")

End Sub


Je récupère bien la liste de mes fichiers à traiter. Ce qui ne marche pas,
c'est que dans la fonction RenseigneTableau, ma variable fichier contient le
nom complet du répertoire et du fichier, alors que quand je ne mets que le
nom du fichier (mais j'y arrive pas dynamiquement), ça marche.

D'autre part, comment faire pour ne pas avoir à ouvrir manuellement chacun
des fichiers ?

Pour l'instant, toutes mes données sont recopiées dans la même colonne, je
verrai après pour incrémenter les colonnes.

Merci pour votre aide,

Sylvie