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

Fermé
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014 - 17 mars 2014 à 11:36
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 17 mars 2014 à 15:56
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.
A voir également:

6 réponses

sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
17 mars 2014 à 11:42
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.
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
17 mars 2014 à 11:43
Pardon, c'est une création, le code pour la copie c'est :
Sheets("Test").Select
Sheets("Test").Copy After:=Sheets(Sheets.Count)
0
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014
17 mars 2014 à 12:10
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 :-)
0
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014
Modifié par pablopezz79 le 17/03/2014 à 12:18
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?
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
17 mars 2014 à 12:25
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.
0
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014
17 mars 2014 à 12:41
Merci quand même. :-)
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
17 mars 2014 à 12:32
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014
17 mars 2014 à 13:57
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.
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
17 mars 2014 à 13:59
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.
0
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014
17 mars 2014 à 14:20
C'est exactement ce que fait ma macro d'impression...
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
17 mars 2014 à 14:28
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 ?
0
pablopezz79 Messages postés 7 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 17 mars 2014
17 mars 2014 à 14:33
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
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
17 mars 2014 à 14:36
Et une macro qui fait enregistrer sous le nom du collaborateur pour chaque identifiant ? Mais là, tu vas te retrouver avec 1800 fichiers Excel.
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
17 mars 2014 à 15:56
On peut aussi avoir un lien hypertexte dans la base de données vers l'onglet qui va bien.
0