Bonjour à tous.
Je souhaiterais améliorer une macro que j'ai réalisée en faisant quelques petites retouches. J'y travaille depuis un moment mais je ne parviens pas à réaliser ce que je souhaite.
Mon fichier va piocher dans les différents fichiers Excel d'un même sous-dossier pour les fusionner. Certains onglets sont alors en double. Le contenu d'un des deux onglets (moins les trois premières lignes présentant le nom des différentes colonnes du tableau) est alors copié dans l'autre, et le "doublon" est ensuite détruit.

Je cherche à améliorer plusieurs choses :
1) En travaillant un peu plus mon fichier, je souhaitais créer un onglet "Tous" rassemblant l'intégralité des lignes de tous les autres onglets. J'ai rajouté quelques lignes en bout de macro, mais petit problème : lorsqu'un onglet ne contient pas de lignes autres que les trois premières (qui ne m'intéressent pas puisqu'elles rassemblent le nom des colonnes), celles-ci sont tout de même copiées à la suite des lignes de mon onglet "Tous".
Les lignes suivantes permettent de copier ce qui provient du doublon et de détruire le doublon ensuite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Set DEST = IIf(Sheets("DIJON").Range("A1") = "", Sheets("DIJON").Range("A1"), Sheets("DIJON").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.CurrentRegion.Interior.Color = RGB(0, 191, 255)
Sheets("DIJON (2)").Range("A4:AV" & Sheets("DIJON (2)").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Application.DisplayAlerts = False
Worksheets("DIJON (2)").Delete
Application.DisplayAlerts = True


2) Il existe aussi une ligne de code me permettant de colorer les lignes du tableau provenant du doublon. Sauf que celle-ci colore aussi les lignes présentant les intitulés des colonnes (les fameuses trois premières lignes). Je préférerais qu'elles ne soient pas colorées). Je pense qu'il y a une multitude de méthodes mais je ne parviens pas trop à comprendre la manière de sélection adéquate pour y parvenir.

3)Je souhaiterais que l'execution de la macro soit réalisé non pas à l'appui d'un bouton dans un des onglets du fichier, mais à l'ouverture de la macro. Le problème, c'est que je ne sais pas comment dépouiller le fichier fabriqué par la macro de toute macro justement, afin que celle ci ne se ré exécute pas automatiquement dès qu'on clique sur le fichier fabriqué (ai-je été clair ?).

Voici l'intégralité du code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
 
Sub PROCEDURE()
 
Dim CM As Workbook 'Classeur Maître
Dim CS As Workbook 'Classeur Source
Dim K As Byte
 
ChDir ActiveWorkbook.Path
Set CM = ActiveWorkbook
 
nf = Dir("*.xls")
Do While nf <> ""
    If nf <> CM.Name Then
        Workbooks.Open Filename:=nf
        Set CS = ActiveWorkbook
        For K = 1 To CS.Sheets.Count
            CS.Sheets(K).Copy After:=CM.Sheets(CM.Sheets.Count)
        Next K
        CS.Close False
    End If
    nf = Dir
Loop
 
Dim DEST As Range
 
Set DEST = IIf(Sheets("PACA").Range("A1") = "", Sheets("PACA").Range("A1"), Sheets("PACA").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.CurrentRegion.Interior.Color = RGB(0, 191, 255)
Sheets("PACA (2)").Range("A4:AV" & Sheets("PACA (2)").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Application.DisplayAlerts = False
Worksheets("PACA (2)").Delete
Application.DisplayAlerts = True
 
Set DEST = IIf(Sheets("DIJON").Range("A1") = "", Sheets("DIJON").Range("A1"), Sheets("DIJON").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.CurrentRegion.Interior.Color = RGB(0, 191, 255)
Sheets("DIJON (2)").Range("A4:AV" & Sheets("DIJON (2)").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Application.DisplayAlerts = False
Worksheets("DIJON (2)").Delete
Application.DisplayAlerts = True
 
Set DEST = IIf(Sheets("LYON").Range("A1") = "", Sheets("LYON").Range("A1"), Sheets("LYON").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.CurrentRegion.Interior.Color = RGB(0, 191, 255)
Sheets("LYON (2)").Range("A4:AV" & Sheets("LYON (2)").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Application.DisplayAlerts = False
Worksheets("LYON (2)").Delete
Application.DisplayAlerts = True
 
Set DEST = IIf(Sheets("MR_MFA").Range("A1") = "", Sheets("MR_MFA").Range("A1"), Sheets("MR_MFA").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.CurrentRegion.Interior.Color = RGB(0, 191, 255)
Sheets("MR_MFA (2)").Range("A4:AV" & Sheets("MR_MFA (2)").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Application.DisplayAlerts = False
Worksheets("MR_MFA (2)").Delete
Application.DisplayAlerts = True
 
Set DEST = IIf(Sheets("Mal formaté").Range("A1") = "", Sheets("Mal formaté").Range("A1"), Sheets("Mal formaté").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.CurrentRegion.Interior.Color = RGB(0, 191, 255)
Sheets("Mal formaté (2)").Range("A4:AV" & Sheets("Mal formaté (2)").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Application.DisplayAlerts = False
Worksheets("Mal formaté (2)").Delete
Application.DisplayAlerts = True
 
Application.DisplayAlerts = False
Worksheets("F").Delete
Application.DisplayAlerts = True
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("PACA").Range("A4:AV" & Sheets("PACA").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("DIJON").Range("A4:AV" & Sheets("DIJON").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("LYON").Range("A4:AV" & Sheets("LYON").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("Mal formaté").Range("A4:AV" & Sheets("Mal formaté").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("MR_MFA").Range("A4:AV" & Sheets("MR_MFA").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("Paris Sud Est").Range("A4:AV" & Sheets("Paris Sud Est").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("CHAMBERY").Range("A4:AV" & Sheets("CHAMBERY").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("MONTPELLIER").Range("A4:AV" & Sheets("MONTPELLIER").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Set DEST = IIf(Sheets("Tous").Range("A1") = "", Sheets("Tous").Range("A1"), Sheets("Tous").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Sheets("Paris rive gauche").Range("A4:AV" & Sheets("Paris rive gauche").Cells(Application.Rows.Count, "A").End(xlUp).Row).Copy DEST
 
Dim Path As String, valeur As String
Path = ActiveWorkbook.Path & "\"
valeur = "CS_ FUSION_" & Format(Date, "dd_mm_yyyy") & "_" & ".xlsm"
ThisWorkbook.SaveAs Path & valeur
 
Application.Quit
 
End Sub