Bonjour le forum,
Je fais appel à vous pour un probleme de macro que je n'arrive pas à solutionner. Plus je cherche et moins je trouve l'erreur.
Voici le code :
Lamacro bloque sur la 3eme ligne en partant de la fin C'est à dire :Wbk.Close True
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 Sub decoupage() 'dossier est une variable de type chaine de caractère (String) qui contient le répertoire courant Dim dossier As String 'Dossier est une variable qui indique ou sont sauvegardes les fichiers dossier = ActiveWorkbook.Path & "\" 'nom du classeur Dim classeurName As String classeurName = ActiveWorkbook.Name 'nom de la feuille Dim feuilleName As String feuilleName = ActiveSheet.Name 'on crée une collection (groupe de cellule) Dim coll As Collection Set coll = New Collection 'première ligne de donnée debut = 2 'On classe la feuille par colonne A Cells.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom For n = 2 To Workbooks(classeurName).Sheets(feuilleName).Range("A65536").End(xlUp).Row On Error Resume Next coll.Add Workbooks(ActiveWorkbook.Name).Sheets(ActiveSheet.Name).Range("A" & n), CStr(Workbooks(classeurName).Sheets(feuilleName).Range("A" & n)) On Error GoTo 0 Next n For n = 1 To coll.Count ligne = 2 'pour chaque nom de "coll", on crée un nouveau classeur 'on désactive excel qui râle Application.DisplayAlerts = False 'on créé un nouveau classeur Set Wbk = Workbooks.Add 'on supprime les feuilles par default pour une feuille du nom de la colonne "coll(n)" Wbk.Sheets("Feuil1").Delete Wbk.Sheets("Feuil2").Delete Wbk.Sheets("Feuil3").Name = coll(n) 'on recopie la première ligne de titre Workbooks(classeurName).Sheets(feuilleName).Rows(1).Copy Destination:=ActiveSheet.Rows(1) 'on recopie toutes les lignes avec le bon nom de colonne For m = debut To Workbooks(classeurName).Sheets(feuilleName).Range("A65536").End(xlUp).Row If Workbooks(classeurName).Sheets(feuilleName).Range("A" & m) = coll(n) Then Workbooks(classeurName).Sheets(feuilleName).Rows(m).Copy Destination:=ActiveSheet.Rows(ligne) ligne = ligne + 1 End If Next m debut = debut + ligne - 3 'on sauvegarde dans le dossier du classeur de départ Wbk.SaveAs dossier & coll(n) 'on ferme le classeur crée lorsque la sauvegarde c'est bien passée Wbk.Close True Next n End Sub
Quelqu'un aurait il la raison ?
Merci.
Partager