Dupliquer des onglets selon une liste de nom

Bonjour à toutes et tous,

J'aurai besoin de votre aide je n'arrive pas à trouver une solution afin de me permettre de dupliquer un onglet "Modèle" en plusieurs onglets selon une liste de noms dans l'onglet "Tab";

J'aurai besoin de dupliquer l'onglet "Modèle" en autant d'onglets qu'il y a de noms dans la liste colonne B de mon onglet "Tab" puis reniommer ces onglets nouvellement créé par le nom dans la colonne B.

J'ai tenté l'aide de Copilot mais sans succès :( Pourriez-vous m'aider ?

Dans un second temps, j'aurai besoin de copier dans ces onglets nouvellement créé, dans les colonnes K à L (date de l'augmentation / montant de l'augmentation), les données de l'onglet "Montant augmentation" en filtrant sur le salarié concerné et copiant les données des colonnes E à F (et en exluant si possible les montants négatif ou à 0).

Pensez-vous être en mesure de m'aider ? Au moins déjà pour dupliquer les onglets, ce qui me serait d'une grande aide sachant que je vais avoir pour certains fichiers 160 onglets à créér !!!

Merci d'avance

cédric

Hello,

la première partie est simple

Sub Dupliquer_Modele()

    Dim Feuille_Tab As Worksheet
    Dim Feuille_Modele As Worksheet
    Dim Nom_Feuille As String
    Dim i As Long
    Dim Derniere_Ligne As Long

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Set Feuille_Tab = ThisWorkbook.Sheets("Tab")
    Set Feuille_Modele = ThisWorkbook.Sheets("Modèle")

    Derniere_Ligne = Feuille_Tab.Cells(Feuille_Tab.Rows.Count, "B").End(xlUp).Row

    For i = 4 To Derniere_Ligne

        Nom_Feuille = Trim(Feuille_Tab.Cells(i, "B").Value)

        Feuille_Modele.Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = Nom_Feuille

    Next i

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub

Bonjour

Merci pour ce retour hyper rapide :)
J'ai copié le code dans un module dans VBA mais j'ai une erreur qui ressort ?

image

Pourtant cela semble correct, je ne comprends pas .

Désolé, j'imagine que ce n'est pas grand chose en plus :(

Merci

Cédric

Re,

voici la V2 avec copie/collage des valeurs

Les impératif (ou à modifier) : à copier dans la classeur à modifier, la feuille Tab dois exister, idem Modèle etc etc

Sub Dupliquer_Modele()

    Dim Feuille_Tab As Worksheet
    Dim Feuille_Modele As Worksheet
    Dim Nom_Feuille As String
    Dim Tableau_Tab As ListObject
    Dim Ligne_Tab As ListRow
    Dim nouvelleFeuille As Worksheet

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Set Feuille_Tab = ThisWorkbook.Sheets("Tab")
    Set Feuille_Modele = ThisWorkbook.Sheets("Modèle")

    Set Tableau_Tab = Feuille_Tab.ListObjects("Tab")

    For Each Ligne_Tab In Tableau_Tab.ListRows
        Nom_Feuille = Trim(Ligne_Tab.Range(1, Tableau_Tab.ListColumns("Nom").Index).Value)

        Feuille_Modele.Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = Nom_Feuille

        Sheets("Montant augmentation").ListObjects("Table1").Range.AutoFilter Field:=3, Criteria1:=Nom_Feuille

        If Range("table1").ListObject.ListColumns(1).Range.SpecialCells(xlCellTypeVisible).Count > 1 Then

            Range("Table1[[Montant augmentation]:[% augmentation]]").Copy
            Range("K16").PasteSpecial Paste:=xlPasteValues
            Range("K16").PasteSpecial Paste:=xlPasteFormats

        End If

    Next Ligne_Tab

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub

Merci pour ton aide malheureusement je n'arrive pas à faire fonctionner la macro
J'ai toujours l'anomalie qui ne reconnait pas la feuille Tab

image

Les libellés des feuilles n'ont pas été modifiés pourtant.

J'ai une version de Excel en Anglais, cela peut-il avoir une incidence ?

merci d'avance encore une fois pour ton aide

Cédric

Voici le modèle du fichier que j'utilise

Bonjour,

L'erreur que tu remontes ici n'est pas du au code mais à l'endroit où tu l'as enregistré.

Tu l'as enregistré dans ton classeur personnel ("PERSONAL.XLSB") et pas dans ce classeur. Il faut que tu le déplaces dans le classeur que tu utilises et que tu réassocies également le bouton à ce nouveau module et non plus sur ton module de "PERSONAL.XLSB". Enfin tu peux supprimer ce code de "PERSONAL.XLSB".

En fait, actuellement, ton bouton pointe vers une sub nommée "Dupliquer_Modele" située dans ton autre classeur Excel "PERSONAL.XLSB". La ligne de code en jaune essaye d'accéder à une feuille nommée "Tab" du classeur contenant la macro (donc "PERSONAL.XLSB") et non pas la feuille "Tab" du classeur contenant réellement tes données (le mot clé "ThisWorkbook" signifie "le classeur contenant ce code").

Du coup d'un point de vue purement technique je suppose que ton "PERSONAL.XLSB" n'a pas de feuille nommée "Tab".

Si tu as plusieurs classeurs ouverts quand tu accèdes à l'éditeur de code alors tu peux saisir du code dans chacun de ces classeurs. Attention de bien mettre ton code dans ton bon classeur. Ici par exemple tu vois que j'ai 3 fichiers Excel ouverts (Classeur1, Classeur2 et ton fichier "modele..."). Fais attention de bien créer tes modules de code dans le bon classeur en commençant par sélectionner son nom (la ligne se met en bleu). Tu peux faire un clic droit sur le nom correct puis choisir "Insérer module" pour ne pas te tromper. Tu vois que dans le cas présent ton fichier "modele..." ne contient pas de module de code.

image

Franchement les gars vous êtes au top :) Vous allez nous faire gagner un temps fou !

Un grand grand merci pour votre aide et votre patience ... effectivement je comprends bien mon erreur et j'aurai pu m'en apercevoir facilement ... désolé
J'ai même réussi à rapatrier avec votre code les données d'une autre table donc génial.

Bonne journée à vous et à bientôt peut-être.

Cédric

Rechercher des sujets similaires à "dupliquer onglets liste nom"