Macro: créer des feuilles en copiant un onglet et renommer

[Fermé]
Signaler
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014
-
Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
-
Bonjour,

J'en appelle à vos lumières pour réaliser la chose suivante :

1. Contexte

Je dispose d'une base de données pour tous les membres du personnel, chacun étant identifié par un numéro de matricule --> liste de matricules

J'ai une feuille qui est une fiche qui reprend une série de données pour un matricule.

J'ai une macro d'impression sur cette feuille qui exécute la routine suivante :
- prend le 1er matricule de la liste et le place dans une cellulle de la feuille "fiche"
(la fiche se complète automatiquement via des "vlookup / recherchev")
- imprime la fiche complétée selon le matricule importé
- prend le matricule suivant de la liste
- imprime
- etc .

Voici le code :

Sub impression()
'
'impression Macro
'Macro enregistrée le 11/07/02 par Licensed User
'
Sheets("fiche individuelle").Select
For Each C In Worksheets("liste Envoi N").Range("A2:A24")
Sheets("liste Envoi N").Select
C.Select
Selection.Copy
Sheets("fiche individuelle").Select
ActiveWindow.LargeScroll Down:=-1
Range("b1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Next C
End Sub


2. Ce que je souhaite faire :

Je voudrais qu'au lieu d'imprimer, excel puisse créer autant de feuilles qu'il y a de matricules en copiant la feuille - maître "fiche", en plaçant le matricule dans la cellule afin que la fiche se complète, et renommer la feuille ainsi créée sur la base de "F - n° de matricule"
... et recommencer pour tous les matricules de ma liste du personnel.

L'objectif est donc d'obtenir un fichier excel qui comporte une fiche pour chaque collaborateur.



Je ne m'y connais pas du tout en VBA, mais je pense qu'il est possible de réaliser ce que je cherche via une macro.

Quelqu'un aurait la gentillesse de m'aider, svp ?

Merci beaucoup.

P.

6 réponses

Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
288
Salut,

Pourtant le code que tu as déjà est suffisant, il suffit juste de remplacer la partie impression par la création d'une nouvelle page :

Sheets("fiche individuelle").Select
For Each C In Worksheets("liste Envoi N").Range("A2:A24")
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = "Test"
........
Next C

Et à la place de tous mes ..... tu mets tout ce que tu veux ajouter dans la page.
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
288
Pardon, c'est une création, le code pour la copie c'est :
Sheets("Test").Select
Sheets("Test").Copy After:=Sheets(Sheets.Count)
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014

Merci Sipherion :-)

Je suis complètement neophyte en VBA, je ne pourrais même pas modifier l'une ou l'autre ligne du code...

Si je comprends bien, en enlevant la partie "impression" le code exact c'est :

Sub impression()
Sheets("fiche individuelle").Select
For Each C In Worksheets("liste Envoi N").Range("A2:A24")
Sheets("Test").Select
Sheets("Test").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Test"
C.Select
Selection.Copy
Sheets("fiche individuelle").Select
ActiveWindow.LargeScroll Down:=-1
Range("b1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next C
End Sub

--> je me pose la question :

- "test" correspond à quoi? C'est le nom de la nouvelle feuille créée?

Si oui, je préférerais le format "F- " suivi du numéro de matricule relatif à la fiche créée.

Ou alors il s'agit du nom de ma feuille- maître (la feuille "fiche individuelle" dans ma macro) ?

Merci :-)
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014

Au fait, y a-t-il un nombre maximum d'onglets dans Excel 2007 ?
J'ai environ 1800 collaborateurs....

S'il y a un nombre limite d'onglets possibles, peut-on envisager la création d'un fichier pdf avec toutes les fiches?
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
288
Wouahou, alors je te le dis tout de suite, 1800 collaborateurs, Excel ne correspondra pas à ton besoin.

Ensuite, effectivement, quand je notais "test", il faut bien sûr le modifier par le nom de ta page.

Saches également que je n'ai pas spécialement envie de te donner la solution toute cuite, déjà parce que je n'ai pas spécialement le temps de tout bien faire (je suis au taf et mon chef qui regarde par dessus mon épaule ^^) et ensuite parce que si on faisait tous ça tout le temps, plus personne ne se donnerait la peine de chercher.

Un document interactif semble être plus approprié car ne sachant pas quelle est la limite du nombre d'onglet dans Excel, je peux te garantir que si ton fichier en a 1800 il mettra 10 minutes au moins à s'ouvrir, sans compter la taille du fichier elle-même.

Si tu veux continuer à utiliser Excel, je te recommande d'apprendre les bases du VB car même si je te donne le code, demain tu ne pourras pas le modifier sans revenir sur Internet. Si tu es un RH, ce n'est pas ton rôle, et si tu n'as pas de service informatique je te recommande fortement de prendre un outil qui te permettra de gérer ton personnel automatiquement.
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014

Merci quand même. :-)
Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
151
Bonjour,

Je pense que je me pencherais sur une solution utilisant le publipostage.
ça t'oblige à créer un modèle Word, mais au moins ça utilise les données telles qu'elles sont dans ton tableau récapitulatif.

A+
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014

Bonjour Zoul67,

J'y ai pensé , mais le hic c'est que sur ma fiche individuelle, excel effectue certaines opérations d'affichage de tel ou tel champ en fonction de la catégorie à laquelle appartient le collaborateur...

Donc pas possible.
Merci.
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
288
On peut se diriger vers une page Excel dynamique, c'est à dire une page dont les informations changent selon le matricule saisit. Ensuite, une Macro qui permettra de changer les matricules automatiquement, puis de les imprimer les unes après les autres.
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014

C'est exactement ce que fait ma macro d'impression...
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
288
Je ne vois pas en quoi créer un onglet par collaborateur serait intéressant dans ce cas, c'est juste pas viable ! Tu te rend compte 1800 onglets ? Comment tu fais pour aller consulter les infos de la page 1437 ? Tu cliques 1400 fois sur le bouton suivant ?
Messages postés
7
Date d'inscription
lundi 17 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014

L'objectif est de distribuer un fichier informatique, et non imprimer des fiches papier, d'autant plus que je suis censé les distribuer par niveau hiérarchique.

Je sais Siphérion... J'essaie de trouver la solution la moins... mauvaise. lol
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
288
Et une macro qui fait enregistrer sous le nom du collaborateur pour chaque identifiant ? Mais là, tu vas te retrouver avec 1800 fichiers Excel.
Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
151
On peut aussi avoir un lien hypertexte dans la base de données vers l'onglet qui va bien.