Créer un onglet automatiquement avec changement de nom

  • Initiateur de la discussion Initiateur de la discussion damaelyon
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

damaelyon

Guest
Bonjour à tous,

En bidouillant un peu et en m'inspirant de divers exemples, j'ai tenté de mettre au point un tableau avec une macro permettant de créer automatiquement un onglet dont le nom serait le contenu de la cellule en colonne A, onglet qui serait une copie d'un onglet existant "Template".

Mais voilà, ça marche pas et je comprends pas pourquoi... 🙁

Je vous mets le fichier en exemple en espérant avoir été suffisamment explicite...

Merci milles fois d'avance à vous
 

Pièces jointes

Re : Créer un onglet automatiquement avec changement de nom

Bonsoir

dans le code, il faudrait initialiser la variable macolonne avant de l'utiliser
si elle fixe, il faudrait plutot utiliser une constant
au lieu de
dim macolonne as integer
declarer ceci
const macolonne =1


VB:
Option Explicit
Dim maColonne As Integer

Sub AjoutFeuilles()
Dim derLi As Long
Dim i As Integer
Dim maFeuille As Worksheet
Set maFeuille = ActiveSheet

maColonne = 1 ' a ajuster

derLi = Columns(maColonne).Find("*", , , , , xlPrevious).Row
For i = 2 To derLi ' 2 si ligne de titre
  'Si la feuille existe déjà, on passe à la ligne suivante
  If FeuilleExiste(maFeuille.Cells(i, maColonne)) Then GoTo Suivant
  ' ajout d'une feuille à la fin
  Sheets("Template").Copy before:=Sheets("Template")
    ' nom de la feuille = valeur de la cellule
  Sheets(Worksheets.Count).Name = maFeuille.Cells(i, maColonne)
Suivant:
Next
'on retourne à la feuille d'origine
maFeuille.Select
Set maFeuille = Nothing
End Sub
Function FeuilleExiste(Nom$) As Boolean 'Ti
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = maColonne Then AjoutFeuilles
End Sub
 
Re : Créer un onglet automatiquement avec changement de nom

Bonsoir à tous,

Voici une solution qui fonctionne chez moi :

Code:
Option Explicit
Const maColonne = 1

Sub AjoutFeuilles()
Dim derLi As Long
Dim i As Integer
Dim maFeuille As Worksheet
Set maFeuille = Sheets(1)

derLi = Columns(maColonne).Find("*", , , , , xlPrevious).Row
For i = 2 To derLi ' 2 si ligne de titre
 'Si la feuille existe déjà, on passe à la ligne suivante
 If FeuilleExiste(maFeuille.Cells(i, maColonne)) Then GoTo Suivant
  ' ajout d'une feuille à la fin
 Sheets("Template").Copy before:=Sheets("Template")
    ' nom de la feuille = valeur de la cellule
 Sheets((Worksheets.Count) - 1).Name = maFeuille.Cells(i, maColonne)
Suivant:
Next
'on retourne à la feuille d'origine
maFeuille.Select
Set maFeuille = Nothing
End Sub
Function FeuilleExiste(Nom$) As Boolean 'Ti
 On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = maColonne Then AjoutFeuilles
End Sub

Cordialement,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
166
Retour