Cette macro est déclenchée automatiquement à chaque fois qu’une cellule est modifiée dans l’onglet A. Le Code VBA doit être collé dans le module de la feuille A.
On souhaite surveiller uniquement la colonne A et déclencher la macro uniquement si la cellule modifiée contient O
Si c’est le cas, elle récupère le nom de l’onglet à créer dans la colonne B sur la même ligne, puis elle duplique l’onglet B et le renomme avec ce nom.
Elle recopie le texte de la cellule en colonne C qui est sur la même ligne que la cellule modifiée et le colle dans la cellule D8 du nouvel onglet.
Private Sub Worksheet_Change(ByVal Target As Range)
' Une macro VBA qui duplique, renomme et remplit un onglet en fonction du contenu d'une cellule
Dim ws As Worksheet ' Déclarer une variable ws de type Worksheet
Dim nom As String ' Déclarer une variable nom de type String
Dim valeur As String ' Déclarer une variable valeur de type String
If Target.Column = 1 And Target.Value = "O" Then ' Si la cellule modifiée est dans la colonne A et contient la lettre O
nom = Cells(Target.Row, 2).Value ' Affecter à la variable nom le contenu de la cellule dans la colonne B sur la même ligne que la cellule modifiée
valeur = Cells(Target.Row, 3).Value ' Affecter à la variable valeur le contenu de la cellule dans la colonne C sur la même ligne que la cellule modifiée
Set ws = Sheets("B") ' Affecter à la variable ws l'onglet nommé Modèle
ws.Copy After:=Sheets(Sheets.Count) ' Copier l'onglet ws après le dernier onglet du classeur
ActiveSheet.Name = nom ' Renommer l'onglet actif avec la valeur de la variable nom
ActiveSheet.Range("B8").Value = valeur ' Remplir la cellule B8 de l'onglet actif avec la valeur de la variable valeur
End If ' Fin du bloc conditionnel
End Sub ' Fin de la procédure
