Bonjour à tous,
Je reviens vers vous parce que je n'arrive pas à mettre au point une macro de consolidation. J'ai réussi à la faire fonctionner mais elle ne me prend pas toutes les lignes des fichiers... en plus elle me copie aussi les entêtes des colonnes. Cela n'est pas très grave car je peux les supprimer rapidement en effectuant un filtre mais le problème est qu'elle ne me prend pas les lignes que je lui demande.
Ce que je veux qu'elle fasse :
- Ouvrir chaque fichier du répertoire
- Effectuer un filtre sur la colonne L et sélectionner le résultat Oui
- Copier-Coller les lignes concernées dans le fichier de consolidation
Ci-joint quelques fichiers pour exemple, le résultat que la Macro donne après son lancement et le résultat attendu (celui-ci je l'ai effectué à la main).
Au passage, serait-il possible d'éliminer le nom de l'onglet ? Dans ce type de fichier il y aura toujours qu'un seul onglet (extraction d'un CRM).
Ci-dessus le code VBA :
Je vous remercie par avance pour votre aide.
Alan.
Je reviens vers vous parce que je n'arrive pas à mettre au point une macro de consolidation. J'ai réussi à la faire fonctionner mais elle ne me prend pas toutes les lignes des fichiers... en plus elle me copie aussi les entêtes des colonnes. Cela n'est pas très grave car je peux les supprimer rapidement en effectuant un filtre mais le problème est qu'elle ne me prend pas les lignes que je lui demande.
Ce que je veux qu'elle fasse :
- Ouvrir chaque fichier du répertoire
- Effectuer un filtre sur la colonne L et sélectionner le résultat Oui
- Copier-Coller les lignes concernées dans le fichier de consolidation
Ci-joint quelques fichiers pour exemple, le résultat que la Macro donne après son lancement et le résultat attendu (celui-ci je l'ai effectué à la main).
Au passage, serait-il possible d'éliminer le nom de l'onglet ? Dans ce type de fichier il y aura toujours qu'un seul onglet (extraction d'un CRM).
Ci-dessus le code VBA :
VB:
Sub Copier_CourbesAD_REV()
Dim DerLig As Long
Dim Ligbas As Long
Dim StrFile, chemin As String
'Il faut mettre ici le chemin de ton répertoire
chemin = "\\gad.intra.net\fr\Profils\Utilisateurs\alan\Desktop\Nouveau dossier\"
StrFile = Dir(chemin & "*.xlsx*")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Do While Len(StrFile)
With Workbooks.Open(chemin & StrFile)
'##################sélectionner les données de chaque écriture
'mettre le nom de la feuille
'Sheets("Report 1 - Rapport détaillé").Select
With Sheets("Report 1 - Rapport détaillé")
DerLig = .Range("a" & Rows.Count).End(xlUp).Row
.Range("A1:L" & DerLig).AutoFilter
.Range("$A$1:L" & DerLig).AutoFilter Field:=11, Criteria1:="OUI"
End With
With ActiveSheet
DerLig = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:L" & DerLig).Copy
Set Wb = ActiveWorkbook
End With
'ActiveWorkbook.Close SaveChanges=False 'Fermer
'copier les données dans le fichier de validation
Windows("fichier-consolidation-lignes.xlsb").Activate
Sheets("Sayfa1").Select
With ActiveSheet
Ligbas = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(Ligbas, "A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
ThisWorkbook.Save
End With
Application.DisplayAlerts = False
Wb.Close False
Application.DisplayAlerts = False
StrFile = Dir
Loop
'Call ferme
End Sub
Je vous remercie par avance pour votre aide.
Alan.
Pièces jointes
-
Fichier n°1.xlsx13.3 KB · Affichages: 13
-
Fichier n°2.xlsx12 KB · Affichages: 7
-
Fichier n°6.xlsx17.8 KB · Affichages: 6
-
Fichier n°5.xlsx13.2 KB · Affichages: 6
-
Fichier n°4.xlsx18.3 KB · Affichages: 7
-
Fichier n°3.xlsx9 KB · Affichages: 7
-
Résultat attendu.xlsx18.3 KB · Affichages: 6
-
Résultat_suite_lancement_macro.xlsb16.4 KB · Affichages: 6