Créer un onglet automatiquement avec changement de nom

damaelyon

XLDnaute Nouveau
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

  • Annulation Billetterie 2013.xlsm
    22.6 KB · Affichages: 44

tbft

XLDnaute Accro
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
 

goldenboy

XLDnaute Occasionnel
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,
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 768
Membres
103 662
dernier inscrit
rterterert