Sub Bilans()
Dim lig&, i&, tablo, fso As Object, chemin$, dossier1$, dossier2$, dossier3$, dossier4$
Feuil1.Activate 'CodeName
lig = ActiveCell.Row
If lig < 3 Or Cells(lig, 1) = "" Or Cells(lig, 3) = "" Then Exit Sub
Application.ScreenUpdating = False
'---transfert de la ligne---
With Sheets("Bilans")
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Cells(lig, 1).Resize(, 21).Copy .Cells(i, 1) 'pour les formats
tablo = Cells(lig, 1).Resize(, 21) 'mémorise les valeurs
.Cells(i, 1).Resize(, 21) = tablo 'copie les valeurs
Cells(lig, 1).Resize(, 21).Delete xlUp 'supprime la ligne
.Parent.RefreshAll 'actualise le TCD
.Visible = xlSheetVisible 'si la feuille est masquée
Application.Goto .[A1], True 'cadrage
.Parent.Save 'enregistre le fichier
End With
'---transfert du dossier dans le dossier BILAN---
Set fso = CreateObject("Scripting.FileSystemObject")
chemin = ThisWorkbook.Path & "\"
dossier1 = chemin & UCase(tablo(1, 1))
dossier2 = dossier1 & " TYPE"
dossier3 = dossier1 & "\" & tablo(1, 3)
dossier4 = chemin & "BILAN"
If Dir(dossier1, vbDirectory) = "" Then MkDir dossier1 'crée le dossier s'il n'existe pas
If Dir(dossier2, vbDirectory) = "" Then MkDir dossier2 'crée le dossier s'il n'existe pas
If Dir(dossier3, vbDirectory) = "" Then fso.CopyFolder dossier2, dossier3 'copie et crée le dossier s'il n'existe pas
If Dir(dossier4, vbDirectory) = "" Then MkDir dossier4 'crée le dossier BILAN s'il n'existe pas
fso.CopyFolder dossier3, dossier4 & "\" & tablo(1, 3) 'transfert
fso.DeleteFolder dossier3 'supprime le dossier
End Sub