Compilation de plusieurs fichiers Excel en un puis création d'un tableau de synthèse

turz

XLDnaute Nouveau
Bonjour à tous.

Tout d'abord, merci à ce forum, qui depuis quelque temps me permet d'avancer dans mon travail de manière phénoménale. Donc encore merci aux contributeurs.

Avant de vous exposer mon problème, sachez que cela fait de longues semaines que je cherche une solution à mon problème mais que je n'ai rien qui ressort, c'est donc pour moi l'occasion de rentrer dans la communauté en postant mon premier message :) !

Ma problématique générale est de compiler plusieurs feuilles Excel de différents fichiers en un seul, puis de tout importer dans un tableau synthèse. Je joins des fichiers exemples pour plus de clarté. Voici la démarche :

CODE DE PROTECTION : excel

Etape 1
- L'utilisateur édite les fiches __1_, __2_ jusqu'à n.
- Seules certaines cases sont autorisées et la feuille est protégée par mot de passe.
- Les données des listes de déroulantes sont situées dans une feuille qui est cachée et verrouillée
- Les données entrées par l'utilisateur sont automatiquement mis dans l'onglet resultat qui est lui aussi caché et verrouillé.

Etape 2
- Présence des fichiers __1_, __2_ jusqu'à n dans un dossier.
- Importer SEULEMENT les onglets résultats des fichiers dans un seul fichier Compilation
- Faire la synthèse des onglets résultats importés précédemment dans l'onglet synthèse pour pouvoir traiter toutes ces données.
- Cette synthèse doit importer les données en effectuant un collage spéciale par valeur (ce que je n'arrive pas à faire dans la petite macro présente...)

Je n'arrive pas à importer seulement les feuilles de résultats (qui sont cachées) dans un fichier et ensuite de ne garder seulement que les valeurs.

A votre disposition pour des infos complémentaires.

Arthur
 

Pièces jointes

  • Nouveau dossier.zip
    73.2 KB · Affichages: 41
  • Nouveau dossier.zip
    73.2 KB · Affichages: 38
  • Nouveau dossier.zip
    73.2 KB · Affichages: 39

turz

XLDnaute Nouveau
Re : Compilation de plusieurs fichiers Excel en un puis création d'un tableau de synt

En changeant le fichier "compilation" dans un autre répertoire, avec plus de fichiers et dont les noms sont longs, la macro 'importer' bloque à la ligne suivante :
Sub Importer()
Dim nf As String
Dim strPath As String
Dim synthese As Workbook
Dim wbkSource As Workbook
Dim wksSource As Worksheet

strPath = ActiveWorkbook.Path
Set synthese = ActiveWorkbook
nf = Dir(strPath & "\*.xlsm")
Application.EnableEvents = False

Do While nf <> ""
If nf <> synthese.Name Then
Set wbkSource = Workbooks.Open(Filename:=strPath & "\" & nf)
For Each wksSource In wbkSource.Worksheets
wksSource.Copy After:=synthese.Sheets(synthese.Sheets.Count)
Next wksSource
wbkSource.Close False
End If
nf = Dir
Loop

Application.EnableEvents = True
End Sub
 

NDRAMAN

XLDnaute Nouveau
Bonjour,
j'ai besoin d'aide cela fait plusieurs jours que j'essaie de trouver une solution à ma macro concernant l'importation de données des plusieurs fichiers excel.
Il s'agit des copier les données de l'onglet '' rep conso f " des fichiers rep gestion.xlsm dans l'onglet "rep conso f" du fichier Facturation interco.xlsm
Ci-joint les différents fichiers
Merci d'avance.

Ci-dessous ma marco :

Private Sub CommandButton2_Click()

'--- tous les fichiers doivent se trouver dans le même dossier que ce fichier Synthèse.xlsm
Dim sDoss As String, sOngl As String, sFich As String
Dim wb1 As Workbook, sh1 As Worksheet, wb2 As Workbook, sh2 As Worksheet
Dim kR1 As Long, kR2 As Long
'--- initialisation
Set wb1 = ActiveWorkbook
Set sh1 = ActiveSheet
sDoss = wb1.Path
sOngl = wb1.ActiveSheet.Name
Debug.Print sDoss, sOngl
'--- vide la feuille actuelle (avant de récupérer les données des autres fichiers)
sh1.Rows("2:" & Rows.Count).Clear
'--- ouvre chaque fichier dont le nom commence par "2020 05"
'--- attention: ordre aléatoire (ne respecte pas nécessairement l'ordre alphabétique)
sFich = Dir(sDoss & "\2020 05*.xlsm")
While sFich <> ""
Workbooks.Open Filename:=sDoss & "\" & sFich
Set wb2 = ActiveWorkbook
Debug.Print wb2.Name
'--- parcourt le dossier pour trouver l'onglet ayant le même nom
For Each sh2 In wb2.Sheets
Debug.Print sh2.Name
If sh2.Name = sOngl Then Exit For
Next
'--- vérifie que feuille de même nom a bien été trouvée
If sh2 Is Nothing Then
'--- pas de feuille de même nom trouvée, continuer ?
If MsgBox("Pas de feuille " & sOngl & vbCrLf & _
"dans le fichier " & wb2.Name & vbCrLf & vbCrLf & _
"Continuer quand même?", _
vbYesNo + vbInformation, _
"Anomalie") = vbNo Then
'--- interrompre la synthèse
kR1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row '--- n° dernière ligne
sh1.Cells(kR1 + 1, 1) = "Opération de synthèse interrompue sur fichier " & wb2.Name
'--- referme de fichier
Set sh2 = Nothing
wb2.Close False
Set wb2 = Nothing
GoTo Fin
Else
'--- continuer la synthèse
kR1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row '--- n° dernière ligne
sh1.Cells(kR1 + 1, 1) = "Pas de feuille '" & sOngl & "' dans le fichier " & wb2.Name
End If
Else
'--- feuille de même nom trouvée, récupération des données
Application.CutCopyMode = False '--- vide le presse papier
kR2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row '--- n° dernière ligne
Rows("2:" & kR2).Copy
wb1.Activate
sh1.Select
kR1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row '--- n° dernière ligne
Cells(kR1 + 1, 1).Select
sh1.Paste
End If
'--- referme le fichier
Set sh2 = Nothing
Application.CutCopyMode = False '--- vide le presse papier
wb2.Close False
Set wb2 = Nothing
'--- cherche le nom du fichier suivant dans le dossier
sFich = Dir
Wend
Fin:
wb1.Activate
kR1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row '--- dernière ligne
sh1.Cells(kR1 + 1, 1).Select
Set sh1 = Nothing
End Sub
 

Pièces jointes

  • 2020 REP GESTION 1.xlsm
    12.5 KB · Affichages: 2
  • 2020 REP GESTION 2.xlsm
    12.8 KB · Affichages: 1
  • Facturation interco.xlsm
    31.7 KB · Affichages: 1

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin