Copier une feuille en VBA vers un autre onglet

Bonjour,

j'essaye de mettre un document que l'on remplit de façon annuelle.

Une fois celui-ci rempli je souhaite l'enregistrer sous le nom de l'année et repartir sur le document base "comptes".

la prise en compte de l'absence des coordonnées d l'année fonctionne, mais ..

Mon problème réside dans le fait que je n'arrive pas à accéder à la nouvelle année renseignée.

Ci Joint les lignes de ce programme.

Sub dupliquer()

Dim numAnnée As String

nom$ = InputBox("Entrez l'année du nouvel onglet")
For Each ws In Worksheets
If ws.Name = nom Then MsgBox "La feuille existe déjà veuillez recommencer l'enregistrement": Exit Sub
Next ws
If numFacture = "" Then MsgBox " Veuillez entrer une année"
Exit Sub

Sheets("comptes").Copy after:=Sheets(Sheets.Count)
Sheets("comptes").Unprotect
Sheets("comptes").Range("zoneSaisie").ClearContents
Sheets("comptes").Protect

ActiveSheet.Name = nom$
Sheets("comptes").Activate
End Sub

Edit modo : merci de mettre le code entre balises SVP avec le bouton </>

Un grand merci pour votre aide

cordialement

Bonjour papychat et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum et notamment

  • Pour plus de lisibilité, utilisez le bouton </> pour insérer vos codes VBA (et si possible aussi pour vos formules Excel) entre balises

- Quelques fonctionnalités du forum à connaître

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Concernant votre demande, je pense que votre problème se situe ici

If numFacture = "" Then MsgBox " Veuillez entrer une année"
Exit Sub

Qu'il faut remplacer par

If numFacture = "" Then MsgBox " Veuillez entrer une année" : Exit Sub

Le deux points est important, car c'est la suite des instructions du If

Merci pour votre participation

Cordialement

Bonjour BrunoM45

Merci de ta réponse rapide, effectivement en bidouillant le code j'avais modifié cet élément

; Exit sub

Mais le problème demeure lorsque j'entre une nouvelle année non inscrite dans les onglets,

le programme se bloque sur la Msgbox du "veuillez entrer une année".

Sub dupliquer()

    Dim numAnnée As String

 nom$ = InputBox("Entrez l'année du nouvel onglet")
For Each ws In Worksheets
    If ws.Name = nom Then MsgBox "La feuille existe déjà veuillez recommencer l'enregistrement": Exit Sub
Next ws
    If numAnnée = "" Then MsgBox " Veuillez entrer une année": Exit Sub

    Sheets("comptes").Copy after:=Sheets(Sheets.Count)
    Sheets("comptes").Unprotect
    Sheets("comptes").Range("zoneSaisie").ClearContents
    Sheets("comptes").Protect

    ActiveSheet.Name = numAnnée
    Sheets("comptes").Activate
End Sub

D'avance merci, j'avais lu les consignes, mais j'ai tout repris en espérant ne pas commettre d'erreur?

Bien cordialement.

papychat

Re,

Désolé, je n'avais pas fais attention au reste du code

Vous demandez l'année dans la variable "Nom", puis vous testez "NumAnnée" = incohérence

Voici le code comme je le ferais

Sub dupliquer()
  Dim sNumAnnée As String
  Dim Ws As Worksheet
  '
  sNumAnnée = InputBox("Entrez l'année du nouvel onglet")
  ' Vérifier si saisie faite
  If sNumAnnée = "" Then MsgBox "Veuillez entrer une année": Exit Sub
  ' Vérifier si saisie d'un nombre
  If Not IsNumeric(sNumAnnée) Then MsgBox "L'année doit être au format [AAAA]": Exit Sub
  ' Vérifier si feuille pas déjà créée
  For Each Ws In Worksheets
    If Ws.Name = sNumAnnée Then MsgBox "La feuille existe déjà veuillez recommencer l'enregistrement": Exit Sub
  Next Ws
  '
  Sheets("comptes").Copy after:=Sheets(Sheets.Count)
  Sheets("comptes").Unprotect
  Sheets("comptes").Range("zoneSaisie").ClearContents
  Sheets("comptes").Protect
  ActiveSheet.Name = sNumAnnée
  Sheets("comptes").Activate
End Sub

A+

re,

c'est super, votre aide est précieuse, merci!

Désolé de vous avoir tutoyé, c'est habituellement la règle dans certains forum.

Encore merci me reste à trouver le like et message résolu!

Re,

Pas de souci pour le tutoiement, en tant que modo je me dois de garder une certaine distance

Du moins je pense

Rechercher des sujets similaires à "copier feuille vba onglet"