Ajout de feuille automatique

Bonsoir,

Je dispose d'un classeur contenant plusieurs feuilles, dont certaines représentant les années, et nommées ainsi (2011 pour cette année par exemple). Ces dites-feuilles sont toutes faites de la même façon, 12 lignes représentant les mois (à partir de A2), et les colonnes correspondant des éléments divers (nombre relativement important). Je ne sais pas si c'est faisable, mais je souhaiterais qu'à chaque nouvelle année, une nouvelle feuille se crée (avec pour nom l'année correspondante), et avec une mise en forme lignes/colonnes identique aux autres (mois + éléments), mais vierge d'un point de vue données dans les autres cellules.

Auriez-vous quelques conseils svp ?

Merci d'avance !

Bonjour

Une idée comme ça

Crée une feuille avec juste la mise en forme (colonnes,libellés, couleurs, formules, bordures etc ...)

Ensuite quand tu en as besoin tu fais une copie de cette feuille ( par macro ou manuellement)

A voir

Bonsoir,

Merci pour ta réponse. Je peux en effet essayer de faire cela. Mais quel serait le code pour effectuer l'action automatiquement au changement d'année ?

Sinon, autre idée peut-être, ne pourrait-on pas copier une feuille d'une année déjà existante en effaçant le contenu des cellules voulues et en la renommant (si cela est possible en VBA bien entendu) ?

Bonjour

A l'ouverture du fichier tu peux tester si ta feuille de l'année en cours existe, et agir en conséquence

Exemple : Copie à partir d'un modèle vierge

Private Sub Workbook_Open()
  On Error Resume Next
  Sheets(CStr(Year(Date))).Visible = True                      ' Teste l'existence de la page
  If Err.Number > 0 Then
    ' Si erreur la page n'existe pas
    Sheets("Modèle").Copy after:=Sheets(Sheets.Count)           ' On l'a crée
    ActiveSheet.Name = Year(Date)                               ' On la nomme
  End If
  On Error GoTo 0
End Sub

Pour faire une copie à partir d'une feuille existante (à partir de l'année précédente par exemple) il faut penser à effacer les zones prévues

Bonjour Banzai64 !

Merci pour ta réponse. Je viens de tenter ton code, un peu modifié pour se servir de la feuille de l'année précédente, qui, à priori, existera:

On Error Resume Next
  Workbooks(fichier).Sheets(CStr(Year(Date))).Visible = True 
 If Err.Number > 0 Then
    ' Si erreur la page n'existe pas
   Workbooks(fichier).Sheets(CStr(annee) - 1).Copy after:=Sheets(Sheets.Count)   'annee est une variable retournant l'année en cours
   ActiveSheet.Name = Year(Date) 
   Workbooks(fichier).Worksheets(CStr(annee)).Range("B2:IV13").ClearContents
 End If
  On Error GoTo 0

Seulement, ça ne fait pas ce que je veux.. En effet, apparemment ça me renomme simplement la feuille de l'année n-1 en l'effaçant, mais ça n'en crée pas de nouvelle...

Bonjour

Je penche vers un problème de parenthèse

Essayes ceci

Workbooks(fichier).Sheets(CStr(annee - 1)).Copy after:=Sheets(Sheets.Count)

Comme cette procédure est prévue dans Workbook_Open tu n'as pas besoin d'utiliser Workbooks(fichier).

Bonne journée

Je viens de trouver à l'instant !

Merci encore !

Rechercher des sujets similaires à "ajout feuille automatique"