bobjazz
XLDnaute Impliqué
Bonjour le Forum
La macro que j'utilise me sert à créer des nouveaux classeurs en fonction d'une donnée en colonne A, cela fonctionne très bien, mais je ne garde pas la mise en forme du tableau d'origine;
Joint un fichier pour l'exemple et joint le code.
Sub Macro1Onglet()
Dim dl As Long
Dim pl As Range
Dim d As Object
Dim cel As Range
Dim tp As Variant
Dim i As Integer
Dim o As Object
With Sheets("Eclairage normal")
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row
Set pl = .Range("A1:A" & dl)
End With
Set d = CreateObject("Scripting.Dictionary")
For Each cel In pl
d(cel.Value) = ""
Next cel
tp = d.keys
For i = 0 To UBound(tp)
On Error Resume Next
Set o = Sheets(CStr(tp(i)))
If Err <> 0 Then
Err = 0
Sheets.Add Before:=Sheets(1)
Set o = ActiveSheet
o.Name = CStr(tp(i))
End If
On Error GoTo 0
o.Cells.Clear
Sheets("Eclairage normal").Range("A1").AutoFilter
Sheets("Eclairage normal").Range("A1").AutoFilter Field:=1, Criteria1:=tp(i)
pl.Offset(0, 1).Resize(pl.Rows.Count, 20).SpecialCells(xlCellTypeVisible).Copy o.Range("A1")
Sheets("Eclairage normal").Range("A1").AutoFilter
Next i
End Sub
Merci de votre aide
Bobjazz
La macro que j'utilise me sert à créer des nouveaux classeurs en fonction d'une donnée en colonne A, cela fonctionne très bien, mais je ne garde pas la mise en forme du tableau d'origine;
Joint un fichier pour l'exemple et joint le code.
Sub Macro1Onglet()
Dim dl As Long
Dim pl As Range
Dim d As Object
Dim cel As Range
Dim tp As Variant
Dim i As Integer
Dim o As Object
With Sheets("Eclairage normal")
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row
Set pl = .Range("A1:A" & dl)
End With
Set d = CreateObject("Scripting.Dictionary")
For Each cel In pl
d(cel.Value) = ""
Next cel
tp = d.keys
For i = 0 To UBound(tp)
On Error Resume Next
Set o = Sheets(CStr(tp(i)))
If Err <> 0 Then
Err = 0
Sheets.Add Before:=Sheets(1)
Set o = ActiveSheet
o.Name = CStr(tp(i))
End If
On Error GoTo 0
o.Cells.Clear
Sheets("Eclairage normal").Range("A1").AutoFilter
Sheets("Eclairage normal").Range("A1").AutoFilter Field:=1, Criteria1:=tp(i)
pl.Offset(0, 1).Resize(pl.Rows.Count, 20).SpecialCells(xlCellTypeVisible).Copy o.Range("A1")
Sheets("Eclairage normal").Range("A1").AutoFilter
Next i
End Sub
Merci de votre aide
Bobjazz