Microsoft 365 Duplication à partir d'une base de données du contenu d'un onglet dans d'autres onglets

Céline49

XLDnaute Junior
Bonjour le forum,
Je cherche à créer autant d'onglets que j'ai de salariés. Je souhaite que chaque onglet créé porte le nom du matricule de ma liste de salariés (présent dans l'onglet "Dernier mois " de la cellule A4 à A56). Pour l'instant, la macro que j'ai créé ne part pas de l'onglet "Dernier mois". Je dois certainement à avoir à rajouter la référence à l'onglet concerné mais je ne sais pas trop où le rajouter. Si quelqu'un saurait me corriger ce petit point....

J'ai également un autre problème. Je souhaiterais que dans chaque onglet créé (donc pour chacun des salariés), je retrouve le même contenu présent actuellement dans mon modèle (onglet "TrameBSI") de sorte que toutes les données se reportent automatiquement à partir des formules que j'ai créé (qui vont chercher des données dans les onglets "Dernier mois", "N-1" et "N").
Est-ce que l'un de vous saurait me dépanner pour cette mission...mon niveau de macro étant toujours aussi faible malheureusement?

En espérant que cela soit suffisamment clair.

Un grand merci par avance à la communauté
 

Pièces jointes

  • Trame BSI pour création macro.xlsm
    49 KB · Affichages: 5
Solution
Bonjour Céline,
Un essai en PJ. Il faut lancer la macro "AjouteFeuilles" :
VB:
Sub AjouteFeuilles()
    Application.ScreenUpdating = False
    Sheets("N").Select
    DL = [A65500].End(xlUp).Row                                     ' Dernière ligne du tableau
    tablo = Range("A4:A" & DL)                                      ' Tranfert des matricule das un array
    For N = 1 To UBound(tablo)                                      ' Pour chaque matricule
        If IsError(Evaluate("=" & tablo(N, 1) & "!A1")) Then        'Si cette feuille n'existe pas alors
            Sheets("TrameBSI").Copy After:=Worksheets(Sheets.Count) ' On duplique TrameBSI à la fin
            ActiveSheet.Name = tablo(N, 1)                          ' On la renomme avec le...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Céline,
Un essai en PJ. Il faut lancer la macro "AjouteFeuilles" :
VB:
Sub AjouteFeuilles()
    Application.ScreenUpdating = False
    Sheets("N").Select
    DL = [A65500].End(xlUp).Row                                     ' Dernière ligne du tableau
    tablo = Range("A4:A" & DL)                                      ' Tranfert des matricule das un array
    For N = 1 To UBound(tablo)                                      ' Pour chaque matricule
        If IsError(Evaluate("=" & tablo(N, 1) & "!A1")) Then        'Si cette feuille n'existe pas alors
            Sheets("TrameBSI").Copy After:=Worksheets(Sheets.Count) ' On duplique TrameBSI à la fin
            ActiveSheet.Name = tablo(N, 1)                          ' On la renomme avec le matricule
        End If
    Next N
    Sheets("N").Select
End Sub
Pour pouvoir tester à plusieurs reprises, un petit code de "nettoyage" :
Code:
Sub Nettoie()
' Pour test, supprime toute feuille dont le nom commence par "0"
    Application.DisplayAlerts = False
    For Each F In Worksheets
        If Left(F.Name, 1) = "0" Then Sheets(F.Name).Delete
    Next F
    Application.DisplayAlerts = True
    Sheets("N").Select
End Sub
 

Pièces jointes

  • Trame BSI pour création macro.xlsm
    59.3 KB · Affichages: 12

Discussions similaires

Statistiques des forums

Discussions
314 721
Messages
2 112 190
Membres
111 460
dernier inscrit
kamil