Nouvelle feuille

Bonjour à tous,

J'ai créé un classeur sur une seule feuille à laquelle est associé beaucoup de macros.

Pour faire simple je voudrais que chaque feuille représente un exercice comptable (2018-2019 par exemple)

Et je voudrais une feuille "modèle" vide que je duplique chaque nouvelle année pour créer une nouvelle feuille pour l'année suivante.

Les macros de mon tableur sont de 3 types :

1- Les formulaires semblable à :

Private Sub CommandButton1_Click()

Dim L As Integer

L = Sheets("2018 2019").Range("B" & Rows.Count).End(xlUp).Row + 1

Range("B" & L).Value = ComboBox1 * 1

Range("C" & L).Value = TextBox1

Range("D" & L).Value = ComboBox2

Range("E" & L).Value = TextBox2 * 1

Range("F" & L).Value = TextBox3

Range("G" & L).Value = TextBox4 * 1

End Sub

En gros je rentre des valeurs dans les comobox et textbox et quand j'appuis sur le bouton valider (CommandButton1) les données se rangent dans un tableau

2 - Les boutons qui ouvrent les formulaires semblable à :

Sub ouvrir()

UserForm1.Show

End Sub

3 - Les boutons de navigation dans la feuille semblable à :

Sub ouvrir11()

Sheets("2018 2019").Select

Range("B47").Select

End Sub

Logiquement il faudrait que je recrée toutes les macros en changeant "2018 2019" par ma nouvelle année

Mais le problème c'est qu'il y a 12 userform et 25 modules.

Donc comment faire pour dupliquer une feuille ET les macros qui y sont associée ?

J'ai essayé de simplement dupliquer ma feuille (sans toucher aux macros) et au final les boutons de navigation me renvoient à la feuille "2018 2019" (normal) mais quand j'ouvre le formulaire et que je rentre les données il me range bien la 1ere ligne de donnée dans ma nouvelle feuille. Par contre une fois qu'il y a une ligne de saisie, il ne m'enregistre plus les données ni dans la nouvelle feuille ni dans la feuille "2018 2019". Je ne comprend rien

Merci d'avance de votre aide

Bonjour,

Pourquoi ne pas fixer ton année dans une variable ?

Dim Exo As String

Exo = InputBox("sur quel exercice souhaitez-vous travailler ?", "Vérification", "....-....")

Et ensuite tu travailles avec la variable Exo dans ta macro ?

Je suis un débutant en terme de VBA

Peut-tu m'expliquer ce que signifie ce code ?

Je suis un débutant en terme de VBA

Peut-tu m'expliquer ce que signifie ce code ?

Bonjour,

Déjà pour te rassurer, je ne suis pas expert non plus, loin de là

J'en apprends tous les jours ici, merci le forum au passage

Et pour en revenir à nos moutons, ce bout de code ouvre une boite de dialogue dans laquelle il faut renseigner du texte (2018-2019 par exemple, ou 2019-2020, etc.) puis fixe le texte saisi dans la variable "Exo".

Ainsi, imaginons que tu veuilles nommer un onglet "2018-2019" par exemple, plus besoin d'écrire les année en toute lettre mais simplement

ActiveSheet.Name = Exo

EDIT :

Un fichier serait le bienvenu pour t'aider

Ok j'ai compris le problème c'est que ça ralonge énormément mon temps de saisie

Il faut à chaque fois que je valide choisir un exercice

Envoi un fichier pour qu'on comprenne ta macro..

Je ne peux pas joindre le fichier il est trop volumineux

c'est bon

Effectivement, gros fichier de travail..

Toujours prévoir à l'avance la possibilité d'utiliser durablement un fichier dans le temps..

A moins de tout modifier, je ne vois pas comment faire.

Éventuellement, si ton année précédente ne te sert plus, remplacer "2018 2019" par "2019 2020" dans tout ton projet.. Mais c'est loin d'être une solution !

Si quelqu'un d'autre à une idée..

Quand tu dit "à moins de tout modifier" tu parle de modifier quoi ?

Quelqu'un peut m'aider ?

Tu ne te sers de "2018 2019" que pour appeler ta feuille ?

Il me semble que je n'ai vu ces dates que dans Sheets("2018 2019")

Si c'est le cas, remplace tout par ActiveSheet ça devrait le faire

Ok je comprend l'idée mais comme je l'ai dit je suis un débutant

Comment tu intègre ActiveSheet à ce code ?

Private Sub CommandButton1_Click()

Dim L As Integer

L = Sheets("2018 2019").Range("B" & Rows.Count).End(xlUp).Row + 1

Range("B" & L).Value = ComboBox1 * 1

Range("C" & L).Value = TextBox1

Range("D" & L).Value = ComboBox2

Range("E" & L).Value = TextBox2 * 1

Range("F" & L).Value = TextBox3

Range("G" & L).Value = TextBox4 * 1

End Sub

Bonjour Geo-fusca, Bonjour le forum,

En remplaçant Sheets("2018 2019") par ActiveSheet comme ceci :

Private Sub CommandButton1_Click()
Dim L As Integer
L = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & L).Value = ComboBox1 * 1
Range("C" & L).Value = TextBox1
Range("D" & L).Value = ComboBox2
Range("E" & L).Value = TextBox2 * 1
Range("F" & L).Value = TextBox3
Range("G" & L).Value = TextBox4 * 1
End Sub

Pour tout remplacer d'un coup :

Ctrl + H ; choisir "Projet en cours" et cliquer sur Remplacer tout

capture ctrl h

C'est bon ça marche

Merci infiniment SlimShady69, sans toi je n'y serai jamais arrivé

Merci à toi pour ton retour,

Bonne continuation

Rechercher des sujets similaires à "nouvelle feuille"