Sub Macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim no As Worksheet 'déclare la variable no (Nouvel Onglet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Application.DisplayAlerts = False 'masques les messages d'Excel
For Each o In Sheets 'boucle sur tous les onglets du classeur
If o.Name <> "Feuil1" Then o.Delete 'si le classeur ne se nomme pas "Feuil1", supprime le classeur
Next o 'prochain onglet du classeur
Application.DisplayAlerts = True 'affiche les messages d'Excel
With Worksheets("Feuil1") 'prend en compte l'onglet "Feuil1"
Set pl = .Range("B2:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row) 'définit la plage pl
For Each cel In pl 'boucle 1 : sur toutes les cellules éditées cel de la plage pl
For Each o In Sheets 'boucle 2 sur tous les onglets du classeur
If cel.Value = o.Name Then GoTo suite 'si la valeur de la cellule est identique au nom de l'onglet, va à l'étiquette "suite"
Next o 'prochain onglet de la boucle 2
Set no = Worksheets.Add(, Worksheets(Worksheets.Count)) 'ajoute un nouvel onglet
no.Name = cel.Value 'nomme l'onglet
.Range("A1:C1").Copy 'copie la plage A1:C1
ActiveSheet.Range("A1").PasteSpecial (xlPasteValues) 'copie les valeurs de la plage A1:C1
suite: 'étiquette
Set dest = Sheets(cel.Value).Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
.Range(cel.Offset(0, -1), cel.Offset(0, 1)).Copy 'copie les données
dest.PasteSpecial (xlPasteValues) 'colle les valeurs des données
Next cel 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "Feuil1"
Application.CutCopyMode = False 'suprime le clignotement de la sélection lié au copier...
End Sub