XL 2019 Dupliquer une feuille Excel en VBA -> anomalie

vaninou

XLDnaute Nouveau
Coucou :)

J'ai écris cette commande très simpliste pour dupliquer une feuille de calcul excel qui fonctionne bien.
Seul bémol si le nom du nouvel onglet existe déjà j'ai un code erreur qui s'affiche pour déboguer la macro.
Pour contourner ce problème j'essaie d'intégrer une commande sous forme de MsgBox qui afficherait une alerte avant de quitter la macro. Mais je n'y arrive pas.

Pouvez-vous m'aider à réécrire ce code ?

Merci à vous car je galère :rolleyes:

Nanou

Voici ma commande :

Sub dupliquer()


Dim numTitre As String
numTitre = InputBox("Titre à suivre")

Dim CodeISIN As String
CodeISIN = InputBox("Code ISIN")

Sheets("action").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Range("_zoneSaisie").ClearContents

ActiveSheet.Name = numTitre

ActiveSheet.Range("reference").Value = numTitre ' Ajout le nom du titre
ActiveSheet.Range("code").Value = CodeISIN ' Ajout code ISIN

End Sub
 
Solution
Bonjour essaie ça :
VB:
Sub dupliquer()

Dim numTitre As String
numTitre = InputBox("Titre à suivre")

Dim CodeISIN As String
CodeISIN = InputBox("Code ISIN")

Sheets("action").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Range("_zoneSaisie").ClearContents


On Error GoTo 1
ActiveSheet.Name = numTitre
ActiveSheet.Range("reference").Value = numTitre ' Ajout le nom du titre
ActiveSheet.Range("code").Value = CodeISIN ' Ajout code ISIN
Exit Sub

1: Application.DisplayAlerts = False
ActiveSheet.Delete
MsgBox ("Nom déja utilisé...")
Application.DisplayAlerts = True

End Sub

shinozak

XLDnaute Occasionnel
Bonjour essaie ça :
VB:
Sub dupliquer()

Dim numTitre As String
numTitre = InputBox("Titre à suivre")

Dim CodeISIN As String
CodeISIN = InputBox("Code ISIN")

Sheets("action").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Range("_zoneSaisie").ClearContents


On Error GoTo 1
ActiveSheet.Name = numTitre
ActiveSheet.Range("reference").Value = numTitre ' Ajout le nom du titre
ActiveSheet.Range("code").Value = CodeISIN ' Ajout code ISIN
Exit Sub

1: Application.DisplayAlerts = False
ActiveSheet.Delete
MsgBox ("Nom déja utilisé...")
Application.DisplayAlerts = True

End Sub
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Bonjour

perso, j'utilise toujours la fonction "feuilleExiste(nomfeuille)" pour vérifier que la feuille que je suis sur le point de créer n'existe pas déjà

VB:
function FeuilleExiste(NomFeuille as string)
FeuilleExiste=false
for each ws in activeworkbook.sheets
    if ws.name=NomFeuille then
          FeuilleExiste=true
          exit function
    end if
next ws
end function

ce qui donnerait ca avec ton code
VB:
Sub dupliquer()


Dim numTitre As String
numTitre = InputBox("Titre à suivre")

Dim CodeISIN As String
CodeISIN = InputBox("Code ISIN")

if FeuilleExiste(NumTitre) then 
    msgbox "Cette feuille existe déjà"
   exit sub
end if
Sheets("action").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Range("_zoneSaisie").ClearContents

ActiveSheet.Name = numTitre

ActiveSheet.Range("reference").Value = numTitre ' Ajout le nom du titre
ActiveSheet.Range("code").Value = CodeISIN ' Ajout code ISIN

End Sub
 

vaninou

XLDnaute Nouveau
Bonjour merci à tous les deux pour votre retour rapide
Le code fonctionne parfaitement avec tes ajouts Shinozak 😘

Sub dupliquer()

Dim numTitre As String
numTitre = InputBox("Titre à suivre")

Dim CodeISIN As String
CodeISIN = InputBox("Code ISIN")

Sheets("action").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Range("_zoneSaisie").ClearContents


On Error GoTo 1
ActiveSheet.Name = numTitre
ActiveSheet.Range("reference").Value = numTitre ' Ajout le nom du titre
ActiveSheet.Range("code").Value = CodeISIN ' Ajout code ISIN
Exit Sub

1: Application.DisplayAlerts = False
ActiveSheet.Delete
MsgBox ("Nom déja utilisé...")
Application.DisplayAlerts = True

End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 713
Messages
2 081 806
Membres
101 819
dernier inscrit
lukumubarth