Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

dguillerme

XLDnaute Junior
Bonjour,

Je souhaiterais rédiger un script VBA qui permettrait de générer automatiquement x nouvelles feuilles à partir de la valeur saisir dans la cellule d'une première feuille.

J'ai tenté deux trois bricoles sans succès. Pourriez-vous m'aider SVP?

Bien cordialement,

David
 

Pierrot93

XLDnaute Barbatruc
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Bonjour,

essaye peut être ceci :
Code:
Worksheets.Add Count:=Sheets(1).Range("A1").Value
bon après midi
@+
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Bonjour,

Merci pour ta réponse. Où dois-je inclure ce code? Dans la feuille où se trouve la cellule A1 où dans le classeur?

@ +

David
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Dois-je laisser le menu déroulant placé par défaut sur "Général" ou bien dois-je choisir Worksheet?
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

J'ai le message d'erreur suivant: "Instruction incorrecte à l'extérieur d'une procédure" et "A1" est sélectionné.

Je n'ai certainement pas inséré correctement le code.
 

Pierrot93

XLDnaute Barbatruc
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Re,

dans l'éditeur vba, tu insères un module standard, et tu colle ceci :
Code:
Option Explicit
Sub test()
Worksheets.Add after:=Sheets(Sheets.Count), Count:=Sheets(1).Range("A1").Value
End Sub
tu ensuite affecter ce code à un bouton...
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Merci Pierrot93. Encore une chose, serait-il possible que les feuilles ajoutées soient la copie d'une feuille déjà présente dans le classeur?

J'aurais donc une feuille de paramétrages où je saisie dans une cellule A1 le nombre de feuilles à générer et une autre feuille qui serait le modèle des feuilles à générer.

Encore merci pour ton aide,

David
 

Pierrot93

XLDnaute Barbatruc
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Re,

il faudrait faire une boucle de ce type :
Code:
Option Explicit
Sub test()
Dim i As Integer
For i = 1 To Sheets(1).Range("A1").Value
    Worksheets("NomFeuilleAcopier").Copy after:=Sheets(Sheets.Count)
Next i
End Sub
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Bonsoir,

Merci pour ta réponse. J'ai encore quelques difficultés.

J'ai créé, selon tes recommandations, un module avec ceci:

Option Explicit
Sub test()
Dim i As Integer
For i = 1 To Sheets(1).Range("L3").Value
Worksheets("-").Copy after:=Sheets(Sheets.Count)
Next i
End Sub

Puis, lorsque je test le script (bouton lecture) j'ai le message suivant:

Erreur d’exécution 1004:
Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur référencé par Visual Basic.

Puis lorsque je clique sur Débogage, on me renvoie vers un script sur le workbook avec une flèche jaune désignant la ligne commençant par "If".

Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Name <> "Readme" And ActiveSheet.Name <> "Descripteurs" And ActiveSheet.Name <> "Prog_Collège" And ActiveSheet.Name <> "Prog_Lycée" And ActiveSheet.Name <> "Matrice" And ActiveSheet.Name <> "Banque d'appréciations" Then ActiveSheet.Name = Cells(3, 4)
End Sub

Il s'agit du script que j'ai ajouté qui me permet ensuite de renommer automatiquement chaque onglet créé (sauf certaines feuilles) en fonction du contenu de la cellule de la colonne 4, ligne 3.

Comment puis-je concilier les deux?

Par avance merci pour votre aide.

David
 

Pierrot93

XLDnaute Barbatruc
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Bonjour,

bah.... comme signalé par la description de l'errreur :
Code:
Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur référencé par Visual Basic.
tu peux pas avoir 2 fois le même nom de feuille dans un même classeur.... et comme tu les renommes à chaque fois après la copie via l'événement "Workbook_SheetActivate" avec le même nom...
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Oui je comprends bien. Mais serait-il possible de copier la feuille x fois puis de la renommer automatiquement en fonction d'un item choisi dans une liste déroulante de chaque feuille?
 

Pierrot93

XLDnaute Barbatruc
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Re,

vois pas de quelle liste déroulante tu parles, en l'état il faut modifier ton "Cells(3, 4)"
 

dguillerme

XLDnaute Junior
Re : Générer automatiquement x onglets à partir de la valeur saisie dans une cellule

Bonjour,

Serait-il possible de commencer par générer les feuilles dont j'ai besoin. Puis, dans un deuxième temps, de renommer les onglets des feuilles qui ont été créées? La référence "Cells(3,4)" correspond à une cellule dont le contenu est choisir dans une liste déroulante.

En définitive, pour résoudre le problème lié au renommage instantané des onglets des feuilles créées, il faudrait pouvoir découpler dans le temps ces deux opérations. Sur une feuille de paramétrages, on saisi dans une cellule le nombre de feuilles que l'on souhaite générer en copiant une feuille modèle. Puis, sur chaque feuille issue de la copie de la feuille modèle, on renomme l'onglet en fonction du contenu de Cells(3,4).

Comment pourrais-je le faire?

Par ailleurs, n'étant pas encore très "doué" avec VBA, je n'ai pas bien compris le lien entre le script saisi dans un module et celui affecté à un bouton. J'ai réussi à créer un bouton et à y coller un script. Mais j'ai copié/collé le script du module... peut-on associer directement le script d'un module à un bouton?

Merci pour tout.

David
 

Discussions similaires


Haut Bas