Copier et renommer feuille modèle et remplir les copies selon une liste

Bonjour!

Je suis nouvelle sur le forum et novice pour le VBA. Voici mon problème:

J'ai une feuille "Liste projets" qui contient une série de # (ces numéros seront mis à jour en cours d'année, au fur et à mesure). J'aimerais que les # soit inscrits sur les onglets de nouvelles feuilles, qui seront une copie de la feuille "modele". Certaines données de la feuille "liste projets" devront se retrouver automatiquement dans les nouvelles feuilles modèles.

Voir le fichier suivant, qui a été rempli manuellement et qui est plus simple à comprendre que mon explication
Voici le même fichier, sans code et sans données :


Un post que j'ai vu qui pourra m'être utile, surtout le code écrit par Jean-Éric :
https://forum.excel-pratique.com/viewtopic.php?t=120778
Il me faut par contre réussir à le comprendre pour être en mesure de l'appliquer à mon fichier. Pouvez-vous m'aider ? Un grand merci !

Êtes-vous en mesure de m'aider à coder mon fichier ? Un grand merci pour votre précieuse aide !

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

Wow! Merci beaucoup gmb !!! Réponse rapide et c'est super ce que ton code fait ! Quelques petites questions supplémentaires et défis supplémentaires ;) :

1. Est-ce possible d'ajouter des commentaires dans le code pour me permettre de comprendre ce que le code fait (pour chaque action ou instruction) ? Je suis novice dans la programmation VBA et je souhaite apprendre. Merci énormément !

2. Comment peut-on faire pour qu'un hyperlien soit créé automatiquement vers la nouvelle feuille ?

3. Je remarque que la page modèle est masquée. Est-ce possible de l'afficher ? Celle-ci n'est pas finale et des modifications pourront être effectuées dans celle-ci en cours d'année. (Est-ce que cela va occasionner des problèmes avec le code?)

4. Est-ce possible de coder les couleurs des onglets des nouvelles feuilles (copie de modèle) selon certaines couleurs ? ie. si la mention "Actif" est inscrit dans la colonne statut de la feuille "Liste projets", la couleur d'onglet de la feuille (copie de la feuille modèle) créée est vert. Annulé = noir ; Terminé = pas de couleur; En attente = jaune. Merci !

5. Je souhaite que la feuille "Liste projets" apparaisse toujours au début du classeur. J'ai trouvé comment la faire apparaître avant chaque feuille active (voir code plus bas), mais je me demande si je peux faire en sorte qu'elle soit toujours visible au début du classeur, peut importe notre emplacement.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

'Programme crée le 21 juillet 2020
'Programme modifié le 21 juillet 2020
'Programme qui permet de faire afficher la feuille "Liste projets" avant la feuille active

Aplication.EnableEvents = False
Application.ScreenUpdating = False
If Application.ActiveSheet.Index <> Application.Sheets("Liste projets").Index Then
    Application.Sheets("Liste projets").Move Before:=Application.Sheets(Application.ActiveSheet.Index)
    Application.Sheets("Liste projets").Activate
    Sh.Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Un grand merci pour ton aide ! :)

Nouvelle version avec macro commentée.

Si tu veux afficher en permanence la feuille modèle, supprime le’instruction

fm.Visible = false

Si tu veux afficher cette feuille occasionnellement pour la modifier, il suffit de faire :

Accueil – Format – Visiblilité – Masquer Afficher – Afficher la feuille

puis sélectionner la feuille « Modele » et cliquer sur « OK »

Bye !

Merci beaucoup gmb ! Je vais continuer à travailler sur mon code pour y inclure les items supplémentaires mentionnés si haut (je ferai d'autres posts sur le forum au besoin). Un gros merci pour ton aide et d'avoir pris le temps d'inscrire les commentaires dans ton code, cela m'aide à bien le comprendre! Merci beaucoup !

Merci et bonne journée!

Bonjour gmb,

Je me demandais si tu savais comment écrire le code qui permet de mettre à jour les informations, à partir du code initial de ton fichier ? En effet, lorsque je change les informations dans les colonnes (numéro de projets, titre, statut), celles-ci ne sont pas mises à jour automatiquement dans les cellules. J'ai tenté différents essais, mais en vain.

Merci beaucoup !

Re-Bonjour,

Avec l'aide d'une collègue, nous avons trouvé les ajouts à effectuer au code. Le voici (cela pourra peut-être servir à d'autres) :

    Set plage = Range("E3:G" & Range("E" & Rows.Count).End(xlUp).Row)   'On définit la plage utile des données des colonnes E à G
    Set fl = ActiveSheet                                                'On donne un nom à la feuille active
    Set fm = Sheets("Modele")                                           'On donne un nom à la feuille "Modele"
    If Not Intersect(Target, plage) Is Nothing Then                     'Si on valide une cellule dans la plage définie plus haut
        If WorksheetFunction.CountA(Range("E" & Target.Row & ":G" & Target.Row)) = 3 Then   'Si les 3 cellules de la plage ne sont pas vides
           Application.EnableEvents = False                             'alors on désactive le déclenchement automatiques des macros événementielles
            nomF = Range("E" & Target.Row)                              'et on donne un nom au contenu de de la cellule en colonne E
            For Each f In Worksheets                                    'On passe toutes les feuille du classeur
                If f.Name = nomF Then                                   'Si une feuille portant ce nom existe
                    Sheets(nomF).Activate                               'on  l'active (ou pas)
                    ActiveSheet.Range("C1") = nomF                              'on remplit les données
                    ActiveSheet.Range("D1") = fl.Range("F" & Target.Row)        'on met à jour le titre
                    ActiveSheet.Range("D2") = fl.Range("G" & Target.Row)        'on met à jour le statut
                    fl.Activate
                    GoTo fin                                            'et on va à l'adressee "fin"
                End If
            Next f                                                      'Fin de la boucle
            fm.Visible = True                                           'on affiche la feuille "Modele" (fm)
            fm.Activate                                                 'on l'active
            fm.Copy after:=fm                                           'on la duplique
            ActiveSheet.Name = nomF                                     'on renomme sa copie
            ActiveSheet.Range("C1") = nomF                              'on remplit les données
            ActiveSheet.Range("D1") = fl.Range("F" & Target.Row)
            ActiveSheet.Range("D2") = fl.Range("G" & Target.Row)
            ActiveSheet.Hyperlinks.Add Anchor:=Range("E" & Target.Row), Address:="", SubAddress:= _
                "'" & nomF & "'!A1"                                     'ajoute un lien hypertexte vers la nouvelle feuille
            Sheets("Modele").Visible = False                            'On masque la feuille "Modele"
            fl.Activate                                                 'on active(ou pas) la feuille Liste projets"
            GoTo fin
        End If
    End If
fin:
    Application.EnableEvents = True     'On réactive le déclenchement automatique des macros événementtielles
End Sub
Rechercher des sujets similaires à "copier renommer feuille modele remplir copies liste"