Nommer automatiquement une feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bernard78

XLDnaute Nouveau
Bonjour,
j'ai créé une macro permettant de créer une nouvelle feuille à partir d'un modèle défini. Mon souci est que je souhaite nommer la nouvelle feuille par le contenu d'une cellule. Cela fonctionne pour la 1ère exécution de la macro, mais dès la 2ème, le nom qui est donné est le précédent et cela bug (normal car ne peut pas donner le même nom à 2 feuilles différentes). Il faudrait donc que ma macro prenne le contenu de la cellule comme une valeur relative et ça, je ne sais pas faire.
Merci d'avance de vos conseils.
 

Pièces jointes

Re : Nommer automatiquement une feuille

J'ai retrouvé la macro dans mes dossiers ...
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        Const sNAMECELL As String = "A1"  ' cellule de référence
        Const sERROR As String = "Nom Invalide "
        Dim sSheetName As String
        
        With Target
            If Not Intersect(.Cells, Range(sNAMECELL)) Is Nothing Then
                sSheetName = Range(sNAMECELL).Value
                If Not sSheetName = "" Then
                    On Error Resume Next
                    Me.Name = sSheetName
                    On Error GoTo 0
                    If Not sSheetName = Me.Name Then _
                        MsgBox sERROR & sNAMECELL
                End If
            End If
        End With
End Sub
J'espère que cela te convient
A +
 
Re : Nommer automatiquement une feuille

Bonjour Bernard, James,

Ci-joint la macro de création de fiche.

Pour créer une fiche, sélectionnez dans la feuille Plan une cellule quelconque de la ligne correspondant au code désiré.

La feuille créée se place toujours en dernière position. La feuille Modèle fiche peut être masquée.

Code:
Sub Créationfiche()
Dim lig As Long, test As Boolean
Sheets("Plan").Activate 'précaution...
lig = ActiveCell.Row
If lig < 8 Or Cells(lig, 1) = "" Then Exit Sub
On Error Resume Next
test = False
test = Not IsError(Sheets(Cells(lig, 1).Value).Name)
If test Then MsgBox "Fiche déjà créée.": Exit Sub
Sheets("Modèle fiche").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Visible = True 'la feuille "Modèle fiche" peut être masquée
With Sheets("Plan")
ActiveSheet.Name = .Cells(lig, 1)
Range("C3") = .Range("F3")
Range("L3") = .Cells(lig, 8)
Range("A7") = .Cells(lig, 2)
Range("C7") = .Cells(lig, 3)
Range("G7") = .Cells(lig, 4)
Range("I7") = .Cells(lig, 5)
Range("K7") = .Cells(lig, 6)
Range("O7") = .Cells(lig, 7)
End With
End Sub

Edit : mettez cette macro au même endroit que celle qui existe, après l'avoir effacée (2 macros ne peuvent avoir le même nom dans un même module).

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
351
Réponses
3
Affichages
117
Réponses
5
Affichages
290
Retour