Sub Macro1()
Dim OD As Worksheet 'déclare la variable OD (Onglet Defusion)
Dim OB As Worksheet 'déclare la variable OD (Onglet base)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim I As Long 'déclare la variable I (Incrément)
Dim NB As Integer 'déclare la variable NB (NomBre)
Dim J As Integer 'déclare la variable J (incrément)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OB = Worksheets("base") 'définit l'onglet OD
Set OD = Worksheets("DEFUSION") 'définit l'onglet OD
OD.Range("A1").CurrentRegion.ClearContents 'efface d'éventuelles anciennes données
OB.Range("A1").CurrentRegion.Copy OD.Range("A1") 'copy les données de la base et les colle dans A1
DL = OD.Cells(Application.Rows.Count, "S").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne S de l'onglet OD
For I = DL To 2 Step -1 'boucle 1 : inversée dur toutes les lignes I de DL à 2
If InStr(1, OD.Cells(I, "S"), "-", vbTextCompare) <> 0 Then 'si le symbole "-" est contenue dans la cellule de la boucle en colonne S
NB = UBound(Split(OD.Cells(I, "S"), "-")) 'définit le nombre d'éléments séparés par ce symble (de 0 à NB)
For J = NB To 1 Step -1 'boucle 2 : inversée sur le nombre d'éléments J de NB à 1
OD.Rows(I).Copy 'copy la lige I
OD.Rows(I + 1).Insert 'insère la ligne copiée une ligne en-dessous
OD.Cells(I + 1, "S").Value = Split(OD.Cells(I, "S"), "-")(J) 'renvoie le Jième élément dans la cellule I+1 colonne S
Next J 'prochain élément de la boucle 2
OD.Cells(I, "S").Value = Split(OD.Cells(I, "S"), "-")(0) 'remplace la cellule I colonne S par le premier élément
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
Application.CutCopyMode = False 'supprime le clignotement lié au [copier/coller]
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub