Duplication automatique de feuilles avec mise en page

Fermé
Gurhaus3 Messages postés 5 Date d'inscription mardi 9 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014 - Modifié par Gurhaus3 le 9/09/2014 à 09:52
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 - 12 sept. 2014 à 13:33
Bonjour à tous,

J'ai un petit soucis et j'espère que je vais obtenir une réponse ici.

Dans le cadre d'une création de "dossier d'intervention ultérieure", je recherche à avoir un fichier excel (2013) dont la première page est sous forme de tableau avec différentes colonnes (N° de dossier, fiche technique n°, article, marque, type, description, nombre de pages) et donc chaque ligne remplie créera une feuille reprenant les différentes informations pour les placer avec une mise en page.

Le but est d'ici automatiser la création de fiches à imprimer car actuellement la méthode est barbare et consiste à utiliser à outrance le copier/coller... ce qui me frustre énormément dans le boulot car c'est dans le domaine de l'électricité/automation (Je suis prit de convulsions et je pousse des cris d'animaux quand le dossier dépasse les 200 articles)

Si quelqu'un a une solution, j'en serais très heureux :D
En attendant... on reprend la méthode du copier coller !

(Tiens, et est-ce possible d'importer des jpg format a4 pour placer ceux-ci correctement 1 par page en vue d'une impression? J'ai en tête de compléter les fiches techniques avec les pdf convertis en jpg, ce qui pourra me donner un fichier excel plus complet que la normale)

Bonne journée tout le monde !




A voir également:

8 réponses

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
9 sept. 2014 à 10:48
Bonjour

A quel moment se fait la création de la fiche technique ? A chaque nouvel ajout dans le tableau principal ?

Si c'est le cas la procedure à suivre pour automatiser pourrait être celle-ci :

1) Créer un modèle vierge de Fiche technique avec la mise en page adéquate

2) Créer une macro qui copiera le modèle, attribuera un nom à la copie (d'après les élements de la ligne du tableau général) et copiera en bonne place les infos du tableau général
Cette macro pouvant être déclenchée soit par un bouton soit automatiquement dès remplissage de la cellule de la dernière colonne

Pour t'aider à réaliser cette macro il faudrait la structure du tableau général et la fiche modèle vierge, poster le fichier sur cjoint.com et revenir ici indiquer le lien fourni

Cdlmnt
0
Gurhaus3 Messages postés 5 Date d'inscription mardi 9 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
9 sept. 2014 à 11:23
Merci pour la réponse rapide.

http://cjoint.com/data/0IjlwZPnDEN.htm

Donc la création de fiche technique n'est pas obligatoirement immédiate. Le but ici est d'arriver à dans un premier temps automatiser la création de fiches techniques suite à un listing pour ensuite imprimer le tout et se servir même de la page de listing comme de table des matières (et donc dans ce cas, il faudra que je modifie la première page pour qu'elle soit en paysage et que je puisse y placer plus d'infos.

Encore merci pour la réponse ^^
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
9 sept. 2014 à 12:10
Bonjour

Une macro possible, à mettre dans le Worksheet de la feuille Liste (ALT F11 pour ouvrir l'éditeur, double-clic sur Liste dans larborescence, copier et colle la macro)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'ligne du double clic
lg = Target.Row
If lg < 12 Then Exit Sub 'sortie sans rien faire si ligne avant la 12
' nom de la feuille à créer
nom = Sheets("Liste").Range("E9") & "_FT " & Sheets("Liste").Range("A" & lg)
' boucle sur feuilles pour vérifier que fiche n'existe pas dejà
For n = 1 To Sheets.Count
If Sheets(n).Name = nom Then MsgBox ("Cette fiche existe déjà"): Exit Sub
Next
'Copie du modele
Sheets("Fiche technique").Select
Sheets("Fiche technique").Copy After:=Sheets(Sheets.Count)
Sheets("Fiche technique (2)").Select
' Renomme feuille créee
Sheets("Fiche technique (2)").Name = nom
'copie les infos dans la feuille crée
Sheets(nom).Range("A9") = Sheets("Liste").Range("A9")
Sheets(nom).Range("D11") = "N° dossier : " & Sheets("Liste").Range("E9")
Sheets(nom).Range("C13") = Sheets("Liste").Range("B" & lg)
Sheets(nom).Range("C16") = Sheets("Liste").Range("C" & lg)
Sheets(nom).Range("C19") = Sheets("Liste").Range("D" & lg)
Sheets(nom).Range("C20") = Sheets("Liste").Range("E" & lg)
Sheets(nom).Range("C27") = Sheets("Liste").Range("F" & lg) & " Pages"
End Sub

Ensuite un double-clic sur nimporte quelle ligne de Liste à partir de la 12° crée la fiche correspondante si elle n'existe déjà pas

A adapter à tes besoins

Cdlmnt
0
Gurhaus3 Messages postés 5 Date d'inscription mardi 9 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
Modifié par Gurhaus3 le 9/09/2014 à 13:24
Tu es un dieu. J'adore.

J'avais des questions pour modifier mais ayant un peu chipoté, c'est résolu.
Par contre une question reste en suspend : En cas de double clic sur une ligne, y a t-il moyen d'éviter l'ouverture automatique de l'onglet relatif?
Ou alors un moyen de prévoir un seul bouton pour générer l'intégralité des feuilles sans effacer celles déjà réalisées mais en pouvant modifier celles-ci et sans message d'erreur en cascade (si 20 feuilles sont déjà faites, aurais-je 20 messages pour signaler qu'une feuille existe déjà?)

Sinon cette feuille va largement me faire gagner du temps.
0

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

Posez votre question
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
9 sept. 2014 à 15:43
Re

Pour le bouton :

Supprimer la macro de la feuille Liste
Créer un module (Dans l'Editeur Onglet Insertion Module)
Y coller la macro suivante

Sub fiche()
Dim DernLigne As Long
'derniere ligne non vide
DernLigne = Sheets("Liste").Range("A" & Rows.Count).End(xlUp).Row
For x = 12 To DernLigne
' nom de la feuille à créer
nom = Sheets("Liste").Range("E9") & "_FT " & Sheets("Liste").Range("A" & x)
' boucle sur feuilles pour vérifier que fiche n'existe pas dejà
dj = 0
For n = 1 To Sheets.Count
If Sheets(n).Name = nom Then dj = 1
Next
If dj = 0 Then 'si la feuille n'existe pas déjà
'Copie du modele
Sheets("Fiche technique").Select
Sheets("Fiche technique").Copy After:=Sheets(Sheets.Count)
Sheets("Fiche technique (2)").Select
' Renomme feuille créee
Sheets("Fiche technique (2)").Name = nom
'copie les infos dans la feuille crée
Sheets(nom).Range("A9") = Sheets("Liste").Range("A9")
Sheets(nom).Range("D11") = "N° dossier : " & Sheets("Liste").Range("E9")
Sheets(nom).Range("C13") = Sheets("Liste").Range("B" & x)
Sheets(nom).Range("C16") = Sheets("Liste").Range("C" & x)
Sheets(nom).Range("C19") = Sheets("Liste").Range("D" & x)
Sheets(nom).Range("C20") = Sheets("Liste").Range("E" & x)
Sheets(nom).Range("C27") = Sheets("Liste").Range("F" & x) & " Pages"
End If
Next x
End Sub

Sur la feuille liste crée le controle ACtive X Bouton puis Clic droit sur le bouton Visualiser le code et mettre simplement dans le code du bouton le nom de la macro c à d fiche

Cdlmnt
0
Gurhaus3 Messages postés 5 Date d'inscription mardi 9 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
10 sept. 2014 à 09:32
Niquel, merci pour le coup de main
0
Gurhaus3 Messages postés 5 Date d'inscription mardi 9 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
12 sept. 2014 à 09:02
Hello,

Je me retrouve quand même face à un souci.

http://cjoint.com/data3/3ImjaAniy7l.htm

Lors de la génération des différentes feuilles, les fiches techniques doivent normalement avoir leur numéro qui s'affiche en C11 (reprise du nom de l'onglet et sélection uniquement de la numérotation).
Je génère par exemple 5 feuilles et dans la case C11 sur toutes les fiches, celles-ci sont nommées "5", comme si la C11 de la dernière feuille était une seule et même cellule avec toutes les autres feuilles.

Une idée?
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
12 sept. 2014 à 13:33
Bonjour

Supprime la formule en C11

Dans la macro rajoute cette ligne parmi celles qui copient les infos :

Sheets(nom).Range("C11") = Sheets("Liste").Range("A" & x)

Cdlmnt
0