DUPLIQUER DES FEUILLES A PARTIR D'UNE LISTE
Résolu
Cat&Dom
-
Bidouilleu_R Messages postés 1209 Statut Membre -
Bidouilleu_R Messages postés 1209 Statut Membre -
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
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:
- DUPLIQUER DES FEUILLES A PARTIR D'UNE LISTE
- Dupliquer ecran - Guide
- Liste déroulante excel - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Dupliquer whatsapp - Guide
12 réponses
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
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
' 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
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
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
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
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 +
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 +
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
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
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
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
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
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
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
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
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
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
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
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
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é
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é
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
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
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.