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
|
Sub Test()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim lng As Long
Dim Col As Integer
With Worksheets("Feuil1")
'défini la plage sur la feuille "Feuil1" en colonne A à partir de A1, à adapter...
Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
'défini le nombre de colonnes pour la récup des valeurs
Col = .Cells(1, .Columns.Count).End(xlToLeft).Column 'sur ligne 1
End With
'boucle...
For Each Cel In Plage
gère l 'erreur de la feuille inexistante...
On Error Resume Next
Set Fe = Worksheets(Cel.Value)
'si elle n'exista pas, la crée, la nomme et inscrit les valeurs sur la première ligne
If Err.Number <> 0 Then
With ThisWorkbook: Set Fe = .Worksheets.Add(, .Sheets(Sheets.Count)): End With
Fe.Name = Cel.Value
On Error GoTo 0
Fe.Range(Fe.Cells(1, 1), Fe.Cells(1, Col)).Value = Worksheets("Feuil1").Range(Cel, Cel.Offset(, Col - 1)).Value
'sinon, rajoute les valeurs à la suite
Else
lng = Fe.Cells(Rows.Count, 1).End(xlUp).Row + 1
Fe.Range(Fe.Cells(lng, 1), Fe.Cells(lng, Col)).Value = Worksheets("Feuil1").Range(Cel, Cel.Offset(, Col - 1)).Value
End If
Next Cel
End Sub |
Partager