Création d'onglet automatisés

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 !

thony_443

XLDnaute Nouveau
Bonjour à tous,

J'ai une question concernant la création automatique d'onglets sur excel,

Je dois créer plus de 200 onglets à partir d'une liste,
Chacun de ces onglets doivent contenir des informations diverses (2 colonnes d'info)

Toutes ces informations (futur nom des onglets, informations à renseigner dans ces onglets)sont regroupées dans feuille de référence (très dense).

Savez-vous comment il est possible d'automatiser cette tâche au maximum ? Pouvez-vous m'orienter dans la démarche ?
Car si je dois réaliser ces travaux manuellement, je pense en avoir pour 1 semaine... sachant qu'en plus certaines données dans ces futurs onglets sont susceptibles d'être modifiés par la suite..

Si vous avez besoin de plus d'informations n'hésitez pas,

Merci beaucoup par avance ! 😀😀
 
Re : Création d'onglet automatisés

Bonjour à tous

thon_443 [Bienvenue sur le forum]
Sans voir comment est agencée ta dense feuille de référence, difficile d'aller plus loin que ce petit exemple
Code:
Sub a()
Dim i As Long
For i = 1 To Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
If Len(Feuil1.Cells(i, 1).Text) > 0 Then
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Feuil1.Cells(i, 1).Value
End If
Next
End Sub
Joint un copie allégée et anonymisée de ton fichier afin qu'on puisse plus facilement t'aider.
Pour savoir comment faire, Lien supprimé ou la FAQ.
(que tu sembles ne pas avoir lu, sinon le fichier serait présent dans ton fil de discussion...🙄)
 
Re : Création d'onglet automatisés

Merci pour vos premiers éléments de réponse !

Chris -> c'est une nomenclature que je dois absolument respecter pour un import, je n'ai donc pas vraiment le choix...

Staple1600 -> Je viens de prendre connaissance de la charte du forum, Merci,
Concernant ton élément de réponse, je dois lancer la macro en me positionnant sur la première cellule de ma liste des futurs onglets ?

Voici donc un complément d'information:

Ci-joint un fichier d'exemple

-> la ligne 1 est composée des onglet à créer (Onglet 1, Onglet 2, Onglet 3 ...)
-> La colonne A contient les nom de cellule devant apparâitre dans chaque onglet (Info 1, Info 2, Info 3 ...)
->Les "Info" doivent appaître dans chaque onglet, uniquement si la valeur associée est 1 ou 2, ( je ne veut pas de la valeur 0)
-> Ces valeurs 1 et 2 doivent apparaître en face de chaque info dans chacun des onglets.

J'espère que c'est assé clair pour pouvoir raisonner,

N'hésitez pas si vous avez besoin d'un complément d'information !

Merci beaucoup !
 

Pièces jointes

Re : Création d'onglet automatisés

Bonsoir à tous


Voici une façon de faire (si j'ai bien compris ce qu'il y a à faire 😉 )
Pour tester, il ne faut au départ qu'il n'y ait que la feuille 1 dans le classeur de test
(Donc supprimes la feuille 2 et 3 de ton classeur exemple)
Puis faire ALT+F11 puis Insertion/Module
Copies dans ce module, la macro ci-dessous
Code:
Sub b()
Dim t, i As Byte, j As Byte
t = Application.Transpose(Range("B1:AZ1").Value)
Application.ScreenUpdating = False
    
    For i = LBound(t) To UBound(t)
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = t(i, 1)
    Next i
    
    For j = 2 To Sheets.Count
    Sheets(j).Range("A2:A77").Value = Feuil1.Range("A2:A77").Value
    Feuil1.Columns(j).Copy Sheets(j).Columns(2)
        With Sheets(j).Range("C2:C77")
            .FormulaR1C1 = "=IF(RC[-1]=0,""X"",0)"
            .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
            .Clear
        End With
    Next j

Application.ScreenUpdating = True
End Sub
Pour la lancer, retourner dans Excel (ALT+Q ou ALT+F11)
Ensuite faire ALT+F8 puis choisir la macro à lancer (ici b) en enfin cliquer sur Exécuter
 
Re : Création d'onglet automatisés

Bonjour, thony_443, chris 🙂, Staple1600 🙂, le Forum,

Un autre essai avec ce code, quel que soit le nombre d'onglets présents dans le fichier.

VB:
Sub Onglets_créer_selon_liste()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Rows("1:1").SpecialCells(xlCellTypeConstants, 23)
        Range(c, c.End(xlDown)).Copy
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = c
        [b1].PasteSpecial Paste:=xlPasteValues
        Feuil1.Columns(1).Copy Destination:=ActiveSheet.[a1]
        With [b:b]: .Replace "0", "", xlPart: .SpecialCells(xlCellTypeBlanks).EntireRow.Delete: End With
    Next
    Feuil1.Activate
    Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : Création d'onglet automatisés

Bonjour à tous

00 (bonjour 😉 )
Range(c, c.End(xlDown)).Copy
En espérant que point de trous, il y aura 😉

Mais je crois que je t'avais déjà xlDownarrer ce petit refrain, non ? 🙄

PS: Ce n'est que là que petite taquinerie matinale et amicale 😉
 
Re : Création d'onglet automatisés

Re-bonjour,

...Range(c, c.End(xlDown)).Copy
En espérant que point de trous, il y aura 😉

Mais je crois que je t'avais déjà xlDownarrer ce petit refrain, non ? 🙄

PS: Ce n'est que là que petite taquinerie matinale et amicale 😉

Tu devrais t'appeler Mém🙂ire... et bibi avoir h😱nte et c😡lère d'oublier inlassablement "ce petit refrain" !

Ci-après, une tranche de mon cerveau + une macro "préventive"...



attachment.php



VB:
Sub Onglets_créer_selon_liste_et_sans_trou_style_gruyère()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Rows("1:1").SpecialCells(xlCellTypeConstants, 23)
        c.EntireColumn.Copy
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = c
        [b1].PasteSpecial Paste:=xlPasteValues
        Feuil1.Columns(1).Copy Destination:=ActiveSheet.[a1]
        With [b:b]: .Replace "0", "", xlPart: .SpecialCells(xlCellTypeBlanks).EntireRow.Delete: End With
    Next
    Feuil1.Activate
    Application.ScreenUpdating = True
End Sub

A bientôt 😀😀
 

Pièces jointes

  • Pas point de trou... .jpg
    Pas point de trou... .jpg
    12 KB · Affichages: 90
Re : Création d'onglet automatisés

Merci beaucoup à tous pour vos aides précieuses !
J'ai pu mettre en place ce module qui ma facilité une grande partie de mon travail !

J'ai une autre question qui me permettrait d'optimiser encore plus la création de mon fichier final,

Double zero -> en partant de ta macro, je souhaite savoir si il est possible de mettre en forme chaque feuille "Onglet" ?
A savoir je dois respecter une nomenclature bien spéciale...
Peut-on géréer ca à partir de la même macro ?

Ci-joint un exemple d'une famille issu de ta macro, la première feuille présente la mise en forme et la complétion des cellule issue de ta macro, la feuille 2 le résultat que je souhaiterai atteindre ...
Il faut que cette mise en forme s'applique à chacune des familles...

Pensez-vous qu'il est possible de parvenir à ça grâce au VB ?

Je vous remercie infiniment ! 🙂
 

Pièces jointes

Re : Création d'onglet automatisés

Bonjour à tous

thony_443
Il serait judicieux d'avoir la question dans son ensemble dès le départ et pas une question à tiroirs...
Car avec ta nouvelle donne, il est plus simple d'avoir un onglet "modéle" pré-rempli avec les valeurs constantes et le dupliquer N fois plutôt que de créer ex-nihilo N onglets sur laquelle on appliquera une mise en forme.

Je laisse le soin à 00 de continuer l'aventure s'il le cœur l'en dit 😉
 
Dernière édition:
- 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
Retour