Sub Macro1()
Dim TabData() As Variant
Application.ScreenUpdating = False
With Sheets("Feuil1") 'on récupère tout le tableau de la feuille dans un tableau vba
TabData = .UsedRange.Value
End With
For i = LBound(TabData, 1) + 1 To UBound(TabData, 1) 'pour chaque ligne du tableau hors ligne d'entete
If InStr(1, TabData(i, 2), "Dossier") = 0 Then 'si la colonne B ne contient pas le mot "Dossier"
NomTech = TabData(i, 3)
NomTech = Left(NomTech, InStr(1, NomTech, " ") + 1)
If Not FeuilleExiste(CStr(NomTech)) Then 'si la feuille n'exite pas
Sheets.Add after:=Sheets(Sheets.Count) 'on créé la feuille
ActiveSheet.Name = CStr(NomTech) 'on lui donne le nom du Tech
End If
If InStr(1, TabData(i, 2), "Dossier") = 0 Then 'si la colonne B ne contient pas le mot "Dossier"
With Sheets(NomTech) 'avec la feuille du tech
fin = .Range("B" & .Rows.Count).End(xlUp).Row + 1 'première ligne vide en colonne B
For j = LBound(TabData, 2) To UBound(TabData, 2) 'pour chaque colonne du tableau
.Cells(fin, j) = TabData(i, j) 'on colle l'info
Next j
End With
End If
End If
Next i
Application.ScreenUpdating = True
End Sub
Function FeuilleExiste(NomFeuille As String) As Boolean 'fonction qui retourne vrai ou faux selon que la feuille "NomFeuille" existe dans le classeur
FeuilleExiste = False
For Each ws In ActiveWorkbook.Sheets
If ws.Name = NomFeuille Then
FeuilleExiste = True
Exit Function
End If
Next ws
End Function