DUPLIQUER DES FEUILLES A PARTIR D'UNE LISTE

Résolu/Fermé
Cat&Dom - 12 nov. 2008 à 13:33
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 25 nov. 2008 à 06:55
Bonjour,

Je travaille sous excell 2000.

Je voudrais dupliquer et renommer une feuille à partir d'une liste d'environ 50 personnes, soit 50 feuilles identiques nominatives.

Me faut-il créer une macro ?

Merci d'avance à celui ou celle qui s'interressera à mon "problème".

Cordialement

Catherine
A voir également:

12 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
12 nov. 2008 à 13:53
je comprends en partie le besoin mais cela nécessite quelques précisions

1) ou se trouve la liste
2) comment s'appelle la feuille , même nom que celui de la liste ou faut-il ajouter qqchose
3) comment doit s'appellera la feuille nouvellement créée.
4) y a -t-til un critère pour la duplication

beaucoup d'interrogation mais c'est possible! via un module vba
0
Cat&Dom
12 nov. 2008 à 19:42
Bonsoir,

Tout d'abord merci de t'interesser à mon cas.

1) La liste (dans une feuille que je nommerai "Personnel") peut se trouver dans le même fichier que celui dans lequel je veux dupliquer la feuille que je nommerai "maquette"
2) La première feuille dupliquée doit porter le nom de la première personne de la liste, la seconde, le nom de la deuxième personne de la liste et ainsi de suite. C'est-à-dire que si j'ai 50 personnes dans ma liste, il faudra que la "maquette" soit dupliquée 50 fois.
3) Pour l'instant je ne prévois pas de critère de duplication

Je pense qu'effectivement, ça devra passer par un code VBA avec une structure en boucle.

J'ai commencé à m'interresser au VBA, mais j'ai un lâcher prise par manque de temps.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
14 nov. 2008 à 09:27
' voilà le code
Tu places un bouton sur la feuille "Personnel"
qui va executer le module VBA suivant.

Sub Création_En_Fonction_De_Liste()
Dim NbFeuilles As Integer 'variable pour compter les feuilles
Dim C As Variant 'contenant chaque élément de la liste


NbFeuilles = Sheets.Count
' je suppose que la liste est en "A7:A10" sur la feuille personnel
application.ScreenUpdating=False
For Each C In Sheets("Personnel").Range("A7:A10")
NbFeuilles = Sheets.Count
Sheets("maquette").Copy After:=Sheets(NbFeuilles)
Sheets("maquette (2)").Name = C
Next

Sheets("Personnel").select ' on revient sur la feuille personnel
application.ScreenUpdating=True
End Sub


si cela te convient... bonne journée ... n'oublie pas de fermer ta demande merci
0
Bonsoir,

D'abord un grand merci pour ta réponse.

Comme tu me l'as dit, j'ai crée un bouton pour lancer l'exécution du programme. Mais lorsque je le lance, en premier lieu j'ai une fenêtre qui s'ouvre avec une croix rouge et les choix suivants : "ok" ou "aide"

Lorsque je réponds "ok", le programme s'exécute mais créé une feuille "maquette2" à la suite de toutes les feuilles nominatives.

Je suppose que tu vas me trouver un remède à cela en un rien de temps

Encore merci

Cordialement.
Catherine
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
16 nov. 2008 à 22:27
Peux-tu me dire ce que dit la fenêtre?
ce qu'il y a d'écrit dans la barre de tite.
je viens de vérifier sur un autre pc tout marche bien.

sur la feuille personnel je mets la liste de A7: A10 si tu la change de place change aussi dans le module comme indiqué
puis je place un bouton Affichage/barre d'outils/formulaire puis click sur le bouton
Click de droit sur le bouton affecter à la macro sélectionner la macro click ok et c'est fini
La macro va crée une copie de la feuille maquette elle s'appelle donc maquette (2) puis elle est renommée selon la liste. si tu n'as pas adressée ta liste seule maquette (2) sera crée.

A +
0

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

Posez votre question
Bonsoir,

Dans la barre de titre de la fenêtre, il y a écrit : MICROSOFT VISUAL BASIC, en-dessous, une croix rouge et 400 et enfin "ok" et "Aide"

J'ai bien étendu la plage de ma liste dans le code.

Une feuille est bien créée pour chacun de mes salariés, mais j'en ai une supplémentaire qui est nommée "Maquette2"

Je pense qu'il y a une feuille "Maquette2" de créer à partir du mommnent ou le système arrive sur une ligne vide, car j'ai étendu la plage de ma liste de A2:A100

Cordialement
Catherine
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
18 nov. 2008 à 08:37
je te règle ce petit problème. pour "maquette 2"
et je crois savoir pourquoi, je regarde et je corrige.
En fait on a pas le droit de nommer une feuille avec un nom vide or si tu as des vides c'est ce qui se produit.

je corrige et tu seras sauvé(e).

Roger
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
18 nov. 2008 à 08:44
Remplace le code VBA par celui-ci
je n'ai pas eu d'erreur pendant le test.
tiens moi au courant pour savoir si ça marche.
et si c'est ok pense à mettre résolu.
roger


Sub Création_En_Fonction_De_Liste()
Dim NbFeuilles As Integer 'variable pour compter les feuilles
Dim C As Variant 'contenant chaque élément de la liste


NbFeuilles = Sheets.Count
' je suppose que la liste est en "A2:A1000" sur la feuille personnel
' selon ta dernière intervention

For Each C In Sheets("Personnel").Range("A2:A1000") ' pour chaque cellule dans la plage "A2 jusqu'à 100
If Not IsEmpty(C) Then ' si l'élément de la cellule n'est pas vide
NbFeuilles = Sheets.Count
Sheets("maquette").Copy After:=Sheets(NbFeuilles)
Sheets("maquette (2)").Name = C
End If
Next

Application.ScreenUpdating = True

End Sub
0
Cat&Dom
21 nov. 2008 à 16:44
Bonjour,

bRAVO, c'est super, ça marche, mais j'aimerais rajouter une petite fonction supplémentaire, je voudrais que sur la maquette, en "D1", viennent s'insérer le nom de la feuille. Ensuite je clos le sujet.

J'abuse un peu, mais j'ai vraiment du mal à créer une macro aussi complexe.

Tout mes remerciements.
Cordialement
Catherine
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
22 nov. 2008 à 09:41
Sub Création_En_Fonction_De_Liste()
Dim NbFeuilles As Integer 'variable pour compter les feuilles
Dim C As Variant 'contenant chaque élément de la liste


NbFeuilles = Sheets.Count
' je suppose que la liste est en "A2:A1000" sur la feuille personnel
' selon ta dernière intervention

For Each C In Sheets("Personnel").Range("A2:A1000") ' pour chaque cellule dans la plage "A2 jusqu'à 100
If Not IsEmpty(C) Then ' si l'élément de la cellule n'est pas vide
NbFeuilles = Sheets.Count
Sheets("maquette").Copy After:=Sheets(NbFeuilles)
Sheets("maquette (2)").Name = C

' Ici le nom est contenu dans C

range("D1")=C


End If
Next

Application.ScreenUpdating = True

End Sub
0
Bonsoir,

En rajoutant simplement range("D1") = C après Sheets("maquette (2)").Name = C, ça ne fonctionne pas.

Avec l'aide d'un livre de formation, j'ai fait plusieurs tentatives sans succès, dont les deux essais suivants :

Sheets("maquette (2)").Range("D1") = C au lieu de range("D1") = C

C.Cells(1, 4) = C au lieu de range("D1") = C

Ca ne fonctionne toujours pas, je ne suis vraiment pas douée, j'aurai bien aimé arriver à me débrouiller seule. Je te sollicite donc de nouveau.

Merci d'avance
Cordialement
Catherine
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
23 nov. 2008 à 14:00
oups!

grosse bêtise de ma part
range("D1")=C

activesheets.range("D1").value=C
' on écrit sur la feuile active tes solutions pourraient fonctionner si tu dis sur quelle feuille
Donc activesheet.cells(1,4).value=C
ou activesheet.range("D1").value=C
ou encore sheets(C).range("D1").value=C

Désolé
0
Bonjour,

Il ne se passe toujours rien en "D1" et j'ai à nouveau le message "Microsoft visual basic" accompagné d'une croix rouge.

Merci encore
Cordialement
Catherine
0
Cat&Dom
24 nov. 2008 à 13:34
Autant pour moi, j'ai fait une bêtise, en fait, j'avais protéger la feuille et oublié d'ôter le verouillage de la cellule "D1".

Tout fonctionne, tu es un chef.

Un grand merci
Cordialement
Catherine
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288 > Cat&Dom
24 nov. 2008 à 19:21
tout le plaisir est pour moi.
en cas de probleme repasse sur le forum.
pense à mettre résolu.

Bon travail et bon courage
0
Bonsoir,

Je ne vois pas de case à cocher pour modifier le statut de la discussion.

Comment dois-je faire ?

Merci
Cordialement
Catherine
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
25 nov. 2008 à 06:55
Dans ton premier post je crois je ne suis plus sûr
im e semble qu'il y a un bouton modifier et tu peux changer le statut.
Ce la fait longtemps que je n'ai pas fait ça... Aller bonne journée.
0