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
| Sub creation_onglet_tri()
'Déclaration des variables
Dim Lig, compte, i, j As Long
Dim Col As String
Dim Cell, Plage As Range
Dim Un As Collection
'Initialisation des variables
Lig = 2
Col = "A" ' colonne de la donnée non vide à tester
compte = 0
Set Un = New Collection ' création liste des éléments uniques
Set Plage = Range("A2:A65536") ' zone de critère et de recherche
With Sheets("Feuil1") ' feuille source
On Error Resume Next
'Boucle sur la plage de cellule
For Each Cell In Plage
'If Cell <> "" Permet de ne pas prendre en compte les cellules vides
'Un.Add Cell, CStr(Cell) Ajoute le contenu de la cellule dans la collection
If Cell <> "" Then Un.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'Boucle sur les éléments de la collection.
For i = 1 To Un.Count
' Création d'un onglet unique par article
'.Cells(i, "E").Value = Un.Item(i)
Sheets.Add
ActiveSheet.Name = Un.Item(i)
Next i
' compteur du nombre de lignes à trier
While .Cells(Lig, "A").Value <> ""
DoEvents
compte = compte + 1
Lig = Lig + 1
Wend
' Sélectionne chacune des lignes et va chercher le premier espace vide dans l'onglet correspondant
For Lig = 2 To compte + 1
j = 1
While Sheets(.Cells(Lig, Col).Value).Cells(j, "A").Value <> ""
DoEvents
j = j + 1
Wend
Sheets(.Cells(Lig, Col).Value).Cells(j, "A").Value = .Cells(Lig, "A").Value
Sheets(.Cells(Lig, Col).Value).Cells(j, "B").Value = .Cells(Lig, "B").Value
Sheets(.Cells(Lig, Col).Value).Cells(j, "C").Value = .Cells(Lig, "C").Value
Sheets(.Cells(Lig, Col).Value).Cells(j, "D").Value = .Cells(Lig, "D").Value
Next Lig
Set Un = Nothing
End With
End Sub |
Partager