Bonjour,
j'ai adapté une macro pour fusionner les feuilles de différents fichier dans une seule feuille d'un nouveau fichier.
J'ai ensuite intégré quelques macro de mise en forme. et pour finir je renomme ma feuille nouvellement crée et j'obtiens ma compilation... Je suis content.
Le hic c'est qu'en renommant ma feuille lorsque je réouvre mon fichier la macro ne retrouve plus ma feuil1 puisque le nom n'est plus le même donc ça bug...
Savez-vous comment je dois procéder pour que cela fonctionne indépendamment du nom de la feuille?
Merci à vous
Ci-dessous le scritp, sans les macro de mise en forme...
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 Private Sub Workbook_Open() Dim chemin As String ' classeur regroupé Dim rep As String ' répertoire à traiter Dim fic As String ' classeur regroupé Dim ligne As Long ' ligne écriture Dim nbc As Integer ' nombre de classeurs Dim nbf As Integer ' nombre de feuilles Dim nbl As Integer ' nombre de lignes Dim mxc As Long ' maximum colones feuille Dim c As Integer ' nombre de colonnes Dim l As Long ' ligne lecture Dim Wf As Worksheet ' feuille regroupement Dim Wl As Worksheet ' feuille regroupée 'rep = ThisWorkbook.Path & "\" rep = "\\Adresse\de\ répertoire réseau\" Application.ScreenUpdating = False Application.EnableEvents = False Application.DisplayAlerts = False On Error GoTo fin mxc = Cells(1, ActiveSheet.UsedRange.Columns.Count).End(xlToRight).Column Set Wf = ThisWorkbook.Sheets("Feuil1") 'variable feuille groupe 'Wf.Cells.ClearContents 'Effacer la feuille précédente nbc = 0: nbf = 0 ' initialisation variables ligne = 3 'débuter le collage à la ligne 3 fic = Dir(rep & "Plan d'actions*.xlsm") ' recherche fichiers While fic <> "" chemin = rep & fic ' chemin fichiers Workbooks.Open chemin, 0 ' ouverture Set Wl = ActiveWorkbook.Sheets("Plan d'actions") nbl = Wl.UsedRange.Rows.Count c = Wl.UsedRange.Columns.Count If ligne > 2 Then l = 2 Else l = 1 ' une seule fois le titre Wl.Cells(5, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 1) ligne = ligne + nbl - l + 1 nbf = nbf + 1 ActiveWorkbook.Close SaveChanges:=False ' Fermeture du classeur nbc = nbc + 1 fic = Dir Wend For l = ligne To 4 Step -1 If Wf.Cells(l, mxc).End(xlToLeft).Column = 1 _ And Wf.Cells(l, 1).Value = "" Then Wf.Rows(l).Delete ligne = ligne - 1 End If Next l 'renommer la feuille d'extraction Sheets("Feuil1").Select Sheets("Feuil1").Name = Format(Now, "dd.m.yyyy") 'Fin fin: MsgBox nbc & " classeurs regroupés avec " & nbf & " feuilles et " & ligne & " lignes" Application.ScreenUpdating = True Application.EnableEvents = True Application.DisplayAlerts = True End Sub
Partager