XL 2019 Affichage de message "Feuille existante"

TxAcid

XLDnaute Nouveau
bonjour les Excelists ;

je résume mon problème, voilà, je vien de créer une petite macro pour dupliquer une feuille "Master" avec une InputBox pour lui attribuer un nouveau nom,

Sub DupliquerMaster()

Dim NomClasse As String
NomDossier = InputBox("Nom dossier")
If NomDossier = "" Then
Exit Sub

End If
Sheets("Master").Visible = xlSheetVisible
Sheets("Master").Range("_Zonesaisie").ClearContents
Sheets("Master").Copy after:=Sheets(Sheets.Count)

Sheets("Master").Visible = xlSheetHidden

ActiveSheet.Name = NomDossier
ActiveSheet.Range("B2").Value = NomDossier

End Sub


ce que je cherche c'est quand je saisi un nom de feuille déjà existant, excel m'afficheras un message indiquant que le nom est déjà attribué et/ou me re-proposer la InputBox

merci d'avance
 
Solution
Bonjour,
Je ne suis pas sûr qu'il faille rendre la feuille visible pour la travailler dessus et la copier, mais j'ai laissé ton code.
J'ai aussi mis un With ThisWorkbook car il est important de toujours complètement qualifier les objets. Plus par principe pour ne jamais avoir de mauvaise surprise (autre classeur actif, autre feuille active... différents de ceux auxquels on pense au moment d'écrire le code).

VB:
Sub DupliquerMaster()
    Dim ErrNumber As Variant
    Dim NomDossier As String

    NomDossier = InputBox("Nom dossier ?")
    If Len(NomDossier) = 0 Then Exit Sub

    With ThisWorkbook
        .Sheets("Master").Visible = xlSheetVisible
        .Sheets("Master").Range("_Zonesaisie").ClearContents...

Dudu2

XLDnaute Barbatruc
Bonjour,
Je ne suis pas sûr qu'il faille rendre la feuille visible pour la travailler dessus et la copier, mais j'ai laissé ton code.
J'ai aussi mis un With ThisWorkbook car il est important de toujours complètement qualifier les objets. Plus par principe pour ne jamais avoir de mauvaise surprise (autre classeur actif, autre feuille active... différents de ceux auxquels on pense au moment d'écrire le code).

VB:
Sub DupliquerMaster()
    Dim ErrNumber As Variant
    Dim NomDossier As String

    NomDossier = InputBox("Nom dossier ?")
    If Len(NomDossier) = 0 Then Exit Sub

    With ThisWorkbook
        .Sheets("Master").Visible = xlSheetVisible
        .Sheets("Master").Range("_Zonesaisie").ClearContents
        .Sheets("Master").Copy after:=.Sheets(.Sheets.Count)
        .Sheets("Master").Visible = xlSheetHidden
    
        Do While 1
            'Vérifier la validité du nom de la nouvelle feuille
            On Error Resume Next
            ActiveSheet.Name = NomDossier
            ErrNumber = Err.Number
            On Error GoTo 0
        
            'Feuille nommée
            If ErrNumber = 0 Then
                ActiveSheet.Range("B2").Value = NomDossier
                Exit Do
            End If
        
            'Feuille mal nommée
            MsgBox "Le nom donné à la feuille est incorrect ou la feuille existe déjà !"
            NomDossier = InputBox("Nom dossier ?")
        
            'Annuler ou saisie vide => abandon
            If Len(NomDossier) = 0 Then
                Application.DisplayAlerts = False
                ActiveSheet.Delete
                Application.DisplayAlerts = True
                Exit Do
            End If
        Loop
    End With
End Sub
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
508

Statistiques des forums

Discussions
311 733
Messages
2 082 010
Membres
101 866
dernier inscrit
XFPRO