Voici le code de la macro:
Sub Macro1()
Dim NomFeuil
Dim NumLign
'Définit le type de variables. Ce n'est pas nécessaire, mais ça fait plus mieux !
'Les lignes qui suivent vont supprimer les feuilles de mouvement qui existent déjà
Sheets("mouvements").Activate
Range("a1").Activate
'on sélectionne la feuille qui contient les noms des mouvements
'on crée une boucle qui recherche tous les noms; il exécute cette boucle jusqu'à ce que
'il rencontre une celluile vide
Do Until ActiveCell.Value = ""
NomFeuil = ActiveCell.Value 'le contenu de la cellule est "copié" dans la variable NomFeuil
Sheets(NomFeuil).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
'sélectionne la feuille correspondante et la supprime (en empêchant le message de
'confirmation d'apparaître)
Sheets("mouvements").Activate 'revient à la feuille "mouvements"
ActiveCell.Delete 'supprime le contenu de la cellule active
ActiveCell.Offset(1, 0).Activate 'se met sur la cellule du dessous
Loop 'revient au début de la boucle
Sheets("Feuil1").Select 'Sélectionne la feuille ("Feuil1") (tu peux renommer cette feuille,
'mais alors, tu dois renommer tous les "Feuil1" de cette macro
NumLign = 1 ' variable du n° de la ligne (si tu veux commencer à une autre ligne, tu mets le n° correspondant)
Cells(NumLign, 1).Activate 'sélectionne la cellule de la 1ère ligne de la 1ère colonne (si tu veux commencer
'à la colonne "b", tu remplaces 1 par 2 ou c = 3 ....
Do While ActiveCell.Value <> ""
' ouvre une boucle et l'exécute tant que la cellule sélectionnée n'est pas vide
NomFeuil = Cells(NumLign, 2).Text ' variable contenant le nom (où le nom se trouve dans
'la colonne "b" (= 2); si il se trouvait dans la colonne "c",
'remplaces 2 par 3, ...
Sheets("mouvements").Activate
Range("a1").Activate
Do Until ActiveCell.Value = ""
'vérifie dans la feuille "mouvements" si le nom du mouvement existe déjà
If ActiveCell.Value = NomFeuil Then
Sheets(NomFeuil).Activate
GoTo 1
'Si le nom existe déjà, active la feuille correspondante
'et va à la ligne 1
Else: ActiveCell.Offset(1, 0).Select
'sinon, il va sur la cellule d'en-dessous pour vérifier son contenu
End If
Loop
ActiveCell.Offset.Value = NomFeuil
'si il n'a pas trouvé le nom, il l'ajoute et crée la feuille correspondante
Sheets.Add
ActiveSheet.Name = NomFeuil
1 Sheets("Feuil1").Activate
ActiveCell.EntireRow.Copy 'sélectionne la ligne où se trouve la cellule active et fait un "copy"
Sheets(NomFeuil).Select
ActiveSheet.Paste 'colle la ligne
ActiveCell.Offset(1, 0).Select 'va à la cellule du dessous
Sheets("Feuil1").Activate 'revient à la "Feuil1"
NumLign = NumLign + 1 'incrémente la variable de 1
Cells(NumLign, 1).Activate
Loop
End Sub