Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Générateur d'onglet excel

Lolo4428

XLDnaute Nouveau
Bonjour à tous

je ne sais pas par où commencer

je souhaiterais savoir s'il est possible à partir d'un tableau de données (dans mon cas la feuille 1 )
de générer un onglet (comme ma feuille 2) le tout automatiquement.

l'idée finale étant de remplir le tableau ligne par ligne sur la feuille 1 et par appui sur le bouton générateur de créer les onglets associés (par ex 3lignes sur feuille 1 = 3 onglets)

merci de votre aide en tout cas

Laurent
 

Pièces jointes

  • Zone.xlsx
    36.4 KB · Affichages: 46

Hieu

XLDnaute Impliqué
Salut Lolo4428,

Bon, c'est pas ce que tu demandes, mais j'te propose déjà une évolution de tes formules, via des index equiv ce qui t'evitera de modifier toutes les formules. ne te reste plus qu'à modifier une cellule (dans laquelle j'ai mis un menu déroulant) sur la feuille pour obtenir ce que tu souhaites.

Ensuite, il ne manquera plus qu'à créer la macro qui copie cette feuille et change la cellule.
 

Pièces jointes

  • zone_v0.xlsx
    25.3 KB · Affichages: 27

Lolo4428

XLDnaute Nouveau
 

Hieu

XLDnaute Impliqué
Je n'ai pas compris ton amélioration ??

EN repartant de mon fichier :
VB:
Sub mlk()
Set wf = WorksheetFunction
Set t = Sheets("table")
Set b = Sheets("base")

nb = wf.CountA(t.Range("a7:a32"))
nb_feuil = 2

Call nettoyage

For i = 1 To nb
Sheets("base").Copy After:=Sheets(nb_feuil)
nb_feuil = nb_feuil + 1
Sheets(nb_feuil).Name = t.Range("a6").Offset(i, 0)
Sheets(nb_feuil).Range("ad2") = t.Range("a6").Offset(i, 0)
Next i
End Sub

Sub nettoyage()
' macro servant à supprimer toutes les feuilles
' autres que table et base
Application.DisplayAlerts = False
Set wf = WorksheetFunction
For Each s In Sheets
If Not wf.Or(s.Name = "table", s.Name = "base") Then s.Delete
Next s

End Sub
 

Pièces jointes

  • zone_v1.xlsm
    34.7 KB · Affichages: 30

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Juste histoire de varier les plaisirs
VB:
Sub CoupDeVBAlai()
Dim s As Worksheet
Application.DisplayAlerts = False
For Each s In Worksheets
If InStr("tablebase", s.Name) = 0 Then s.Delete
Next
End Sub
 

Discussions similaires

Réponses
40
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…