Microsoft

Une macro pour dupliquer un onglet en fonction d’une valeur dans une cellule

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


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *