Bonjour le forum !
Petite énigme en VBA en cet après-midi fort gris
Sur une feuille "Depart", j'ai un tableau de données comme sur le screenshot ci-joint.
Je souhaite, pour chaque classe, créer une nouvelle feuille qui sera nommée selon le numéro de la classe et qui récupèrera les informations propre à cette classe.
Pour ce faire, j'ai créé une liste sans doublon (qui est effacée à la fin du traitement).
Ensuite je filtre mon tableau en fonction de la classe afin de copier les données de chaque classe une à une et de les coller dans les feuilles nouvellement crées.
Ainsi, à la fin je me retrouve avec un classeur comportant les feuilles suivantes :
Depart > 1 > 2 > 3 > 4
Voici mon bout de code :
Dans mon tableau, le nombre de colonnes est fixe mais le nombre de lignes peut varier.
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 Dim lastlig As Long, lastligcl As Long, i As Long, xfeuille As Worksheet, numcl As String ThisWorkbook.Worksheets(2).Activate ' Créer une liste (temporaire) des classes sans doublons en colonne M lastlig = Range("C1048576").End(xlUp).Row [C6:C1000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[M1], Unique:=True 'Créer nouvelle feuille pour chaque classe et la nommer selon la classe; placer les nouvelles feuilles en dernière position lastligcl = Range("P200").End(xlUp).Row For i = 2 To lastligcl numcl = Cells(i, 13).Value Worksheets.Add.Move After:=Worksheets(Worksheets.Count) Worksheets(i).Name = numcl Application.Goto ActiveWorkbook.Worksheets(2).Range("A1") Range("C6").AutoFilter Field:=3, Criteria1:=Cells(i, 13).Value Range("A6:E6" & lastlig).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets(i).Cells(1, 1) Next i ' Boucle sur les noms des classes Application.Goto ActiveWorkbook.Worksheets(2).Range("A1") For i = 2 To lastligcl numcl = Cells(i, 13).Value Worksheets(i).Name = numcl Next i ' Supprime la colonne temporaire Range("M:M").Delete Range("A6:E" & lastlig).AutoFilter Field:=2 Range("A1").Select
Quand j'exécute ma macro, la liste sans doublons est créée impeccablement mais survient une erreur d'exécution 1004 sur la ligne que j'ai écrite en rouge :
"Cette sélection n'est pas valide. Raison possibles:
- les zones de copie et de collage ne peuvent se superposer que si elles sont de dimension et de forme identiques.
- si vous utilisez la commande Créer à partir de la sélection, la ligne ou la colonne contenant les noms proposés n'est pas incluse dans les"
(je n'ai pas la suite du message, impossible d'agrandir la fenêtre !)
D'avance, merci beaucoup everybody !
Kaera*
Partager