Je cherche de l'aide concernant un code VBA.
J'ai trouvé différents échanges sur le forum mais pas de solutions.
J'ai une feuille Active avec un Bouton qui active la macro ci-dessous.
Le but est de copier en dernier une feuille masquée nomée "TRAME_PERIODE" en changeant le nom mais de vérifier que le nom entré dans l'inputbox n'est pas une feuille déjà existante.
J'ai un message d'erreur qui m'indique "Erreur d'exécution '424' : Objet requis et me souligne la ligne suivante : ActiveSheets.Name = periode
Code:
Private Sub CREER_PERIODE_Click()
Dim periode As String
Dim WS As Worksheet
Dim WSname As String
periode = InputBox("Veuillez entrer le nom de votre Période")
For Each WS In Worksheets
If WS.Name = periode Then
MsgBox ("Cette période existe déjà, merci d'entrer un autre nom")
Exit Sub
End If
Next
Sheets("TRAME_PERIODE").Visible = True
Sheets("TRAME_PERIODE").Copy after:=Sheets(Sheets.Count)
ActiveSheets.Name = periode
ActiveSheet.Unprotect
Selection.OnAction = "ACCUEIL"
Range("A3").Select
End Sub
Avez-vous une solution ou une modification de mon code ?
Re : VBA Copier un onglet avec InputBox et éviter les doublons de noms
Hello
Essaie ce code
Code:
Private Sub CREER_PERIODE_Click()
Dim periode As String
Dim WS As Worksheet
Dim WSname As String
periode = InputBox("Veuillez entrer le nom de votre Période")
For Each WS In Worksheets
If WS.Name = periode Then
MsgBox ("Cette période existe déjà, merci d'entrer un autre nom")
Exit Sub
End If
Next
Sheets("TRAME_PERIODE").Visible = True
With Sheets("TRAME_PERIODE")
.Copy After:=Sheets(Sheets.Count)
.Name = periode
.Unprotect
End With
Selection.OnAction = "ACCUEIL"
Range("A3").Select
End Sub
Re : VBA Copier un onglet avec InputBox et éviter les doublons de noms
Bonjour mikael,Salut Vgendron
Tu as tapé
ActiveSheet.Name = periode
cette instruction est fausse!
Si tu place:
ActiveSheet.Name = "periode" cela poursuivra le programme en remplçant le nom de la feuille active par (periode).
Re : VBA Copier un onglet avec InputBox et éviter les doublons de noms
chez moi. ce code fonctionne sans message d'erreur
Code:
Private Sub CREER_PERIODE_Click()
Dim periode As String
Dim WS As Worksheet
Dim WSname As String
periode = InputBox("Veuillez entrer le nom de votre Période")
For Each WS In Worksheets
If WS.Name = periode Then
MsgBox ("Cette période existe déjà, merci d'entrer un autre nom")
Exit Sub
End If
Next
Sheets("TRAME_PERIODE").Visible = True
Sheets("TRAME_PERIODE").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = periode
ActiveSheet.Unprotect
'Selection.OnAction = "ACCUEIL"
'Range("A3").Select
Sheets("TRAME_PERIODE").Visible = False
End Sub
après. si tu souhaites retourner à la page d'acceuil
il suffit de rajoutter
Sheets("ACCEUIL").activate