Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protection

Nicolas_G

XLDnaute Nouveau
Bonjour,

J'ai besoin de mettre en place dans mon entreprise un fichier Excel dont le contenu pourrait être décliné, via macro, en plusieurs petits fichiers Excel distincts (en fonction de l'établissement concerné). Ci-joint un fichier d'exemple, le vrai est évidemment beaucoup plus étoffé (plus de lignes, de colonnes et de formules) mais la base de travail est respectée dans ce petit exemple.

Nous avons donc :
- Un onglet Liste des salariés avec les informations propres à chacun. On trouve 4 manières de renseigner les colonnes : saisie en dur, saisie soumise à liste de validation, données rapatriées d'un autre onglet via RECHERCHEV et données calculées.
- Deux onglets Table qui contiennent les listes de validation et les données rapatriées dans le premier onglet via RECHERCHEV.
- Un onglet Synthèse qui comprend un tableau croisé dynamique basé sur le détail du premier onglet.

Pour faire simple, j'ai besoin d' « Enregistrer sous » ce fichier en autant d'établissements listés dans l'onglet détail, en copiant non seulement cet onglet mais aussi les onglets Table 1 et Synthèse, puis protéger l'ouverture de ce nouveau petit fichier par un mot de passe.

Pas à pas, la macro devrait donc faire quelque chose dans ce genre :
- copier / coller les valeurs de la colonne NOM du premier onglet (car l’onglet Table 2 sera supprimé du fichier futur)
- supprimer l’onglet Table 2 devenu inutile
- supprimer toutes les lignes de l’onglet Liste des salariés qui ne correspondent pas à l’établissement traité
- actualiser les données pour que le tableau croisé dynamique de l’onglet Synthèse soit à jour avec uniquement la population de l’établissement traité
- enregistrer le nouveau fichier dans un répertoire distinct (voir ci-après) avec pour nom « Exemple - Etab1.xlsx » s’il s’agit de l’établissement 1
- protéger l’accès en lecture par un mot de passe (mot de passe commun à tous les établissements)

Concernant le répertoire sous lequel enregistrer le fichier, il varie en fonction de l’établissement :
C:\Chemin exemple\Etab 1
C:\Chemin exemple\Etab 2
C:\Chemin exemple\Etab 3
C:\Chemin exemple\Etab 4
Mon fichier de base étant stocké dans C:\Chemin exemple\Global

J’espère que ma demande est assez précise, si besoin je la complèterai en répondant à vos questions.

Merci d’avance !
 

Pièces jointes

  • Exemple.xlsx
    17.5 KB · Affichages: 161
  • Exemple.xlsx
    17.5 KB · Affichages: 184
  • Exemple.xlsx
    17.5 KB · Affichages: 207

job75

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonjour Nicolas_G,

je ne peux pas croire que personne ne puisse me venir en aide !

C'est plus qu'une aide que vous demandez, c'est la mise en place d'un projet clé en main.

Ce n'est guère la vocation de ce forum.

Prenez-vous par la main et construisez la macro.

Là où ça coincera vous trouverez de l'aide.

A+
 

Nicolas_G

XLDnaute Nouveau
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Merci pour cette réponse chaleureuse...
Malheureusement mes connaissances en VBA sont rudimentaires.

Je n'avais, ou plutôt je n'ai, pas l'impression de demander bien plus complexe qu'une macro permettant de scinder un fichier en plusieurs, chose que l'on trouve ici et là dans ce forum. J'ai pris soin de fournir un fichier d'exemple montrant bien ce que je souhaite, en étant le plus précis possible, pour rendre la compréhension plus aisée. Si cela revient considérer ma question comme une demande de prestation à part entière c'est fort dommage. Ma foi, j'ai du mal interpréter la charte...
 

job75

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Re,

Merci pour cette réponse chaleureuse...

Elle est chaleureuse.

J'ai pris la peine de vous expliquer pourquoi, depuis 2 jours, vous n'avez aucune réponse.

Maintenant vous en faites ce que vous voulez.

A+
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonjour,
Bin job, de meuvais humeur ce matin :D

Pour faire simple, j'ai besoin d' « Enregistrer sous » ce fichier en autant d'établissements listés dans l'onglet détail
Pour faire simple....c'est un euphémisme !
L'est où l'onglet détail ?
Reprends ton explication et pazapatipa on devrait s'en sortir
En général, les explications simples en 3 lignes valent mieux qu'un roman
A+
kjin
 

Nicolas_G

XLDnaute Nouveau
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Ce qui est certain c'est que je ne me suis pas inscrit ici pour faire office de bouc émissaire.

Il est vrai que je me suis inscrit d'abord pour trouver réponse à mon besoin, comme beaucoup de membres sans doute, mais j'aiderai volontiers à mon tour si le besoin d'autres utilisateurs est dans mes cordes. D'une manière générale je suis moi-même plutôt à l'aise avec Excel hors usage VBA, mais la plupart des questions que j'ai pu lire sur ce forum depuis mon arrivée dépassent mes compétences. De fait, cela me pose aujourd'hui dans la position de demandeur plutôt que de contributeur.

Merci kjin pour ta réponse.
"Pour faire simple" doit ici se lire "en bref" : je tente de résumer en une phrase ce que je souhaite obtenir de la macro. Justement parce que, comme tu le dis, les explications simples en trois lignes valent parfois mieux qu'un roman. :)
L'onglet détail est l'onglet "Liste des salariés", mes excuses pour cette imprécision.

J'ai clairement l'impression qu'à avoir voulu être trop précis je passe pour un flemmard profiteur des compétences des autres. Alors je vais parcourir à nouveau les quelques 187096 posts de ce forum pour essayer d'y trouver un semblant de macro s'approchant de mon besoin, essayer de la comprendre et de l'adapter à mon cas et je reviendrai vers vous lorsque je buterai. Peut-être qu'alors j'aurai des réponses un peu plus aimables.

Je vous souhaite une excellente fin de semaine.
 

kjin

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonsoir,
Ce qui est certain c'est que je ne me suis pas inscrit ici pour faire office de bouc émissaire
J'aurais du m'abstenir de faire des commentaires et je le regrette
Lorsque la une question nécessite plusieurs traitements, il est préférable de la scinder en plusieurs étapes, c'est sans doute ce qui aura irrité le sieur Job, car comme tu l'auras constaté sur le forum, Job est une personne très disponible, plutôt courtoise et très bon.
Là dessus, j'essaie de comprendre ta question, et Job aussi (aie....)
A+
kjin
 

Staple1600

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonsoir à tous, (sieur Kjin et sieur job75 ;))
Bonjour et Bienvenue Nicolas_G

Nicolas_G
Préambule: je n'ai pas ouvert ton fichier. Pourquoi ? Parce ce que c'est un *.xlsx et par conséquent je sais qu'il ne contient aucune macro.
Or c'est bien une macro que tu souhaites pour solutionner ton problème.
Tu pourrais donc dans un premier temps grâce à l'enregisteur de macros obtenir une première base de code VBA sur lequel nous nous appuierons pour aller plus loin.
Pour ce faire, réalises manuellement* ce que tu décris dans ton premier message tout en laissant tourner l’enregistreur de macros.
*:Fais la manip pour un seul établissement.

Puis postes le code VBA obtenu:
- soit seul dans le corps du message-
- soit dans une nouvelle pièce jointe mais *.xlsm ou *.xls cette fois-ci.
 

Nicolas_G

XLDnaute Nouveau
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonjour,

Merci pour ces derniers messages et pour votre aide future.
Je vais donc avancer de mon côté et reviendrai vers vous avec des éléments plus concrets.

A bientôt !
 

Nicolas_G

XLDnaute Nouveau
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Voici où j'en suis : la macro scinde le fichier en autant de fichiers établissement, avec copie des valeurs de la colonne C de l'onglet.

Mes prochaines priorités :
Dupliquer aussi les onglets Table 1 et Synthèse dans chaque fichier établissement et faire que les informations de l'onglet Table 1 serve de référence :
- pour la liste de choix de la colonne "Affectation" ;
- pour la fonction RECHERCHEV de la colonne "Correspondance".

Je ne sais pas à quel niveau de la macro intervenir, ni comment gérer les va-et-vient entre le fichier initial et les fichiers scindés ?

Merci pour votre contribution.
 

Pièces jointes

  • Exemple.xlsm
    27.9 KB · Affichages: 231
  • Exemple.xlsm
    27.9 KB · Affichages: 248
  • Exemple.xlsm
    27.9 KB · Affichages: 237

Staple1600

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonsoir à tous

Nicolas_G
Bravo d'avoir mis les mains dans le cambouis et de t'être creuser les méninges ;)
Ca fait plaisir ;)

Une petite suggestion en passant (tu peux éviter de passer par le copier/coller/Valeurs seules (voir ci-dessous
VB:
'Copie / collage valeurs de la colonne NOM
[With Columns(3).SpecialCells(xlCellTypeFormulas)
.Value = .Value
End With]
 

Nicolas_G

XLDnaute Nouveau
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Merci pour l'astuce !

Je n'arrive pas à copier les autres onglets (Table 1 et Synthèse) dans tous mes fichiers établissement, je ne vois pas comment m'y prendre.

Auriez-vous une idée ?
 

Staple1600

XLDnaute Barbatruc
Re : Créer plusieurs fichiers à partir d'un seul, avec onglets, formules et protectio

Bonsoir à tous

Nicolas_G

Je n'arrive pas à copier les autres onglets (Table 1 et Synthèse) dans tous mes fichiers établissement, je ne vois pas comment m'y prendre.
Auriez-vous une idée ?

Il semblerait que oui ;)
Et elle fonctionne en plus ;)
NB: Je te laisse changer les noms des feuilles dans l'Array
(Car j'ai testé sur un classeur de test avec des feuilles a,b et c )
VB:
Sub DecoupageII()
Dim TWbk As Workbook, NWbk As Workbook
Dim CollDir As New Collection, Plage As Range, L&, L2&, Lmax&
Application.ScreenUpdating = False
Set TWbk = ThisWorkbook
With Sheets("Liste des salariés")
    Lmax = .Cells(Application.Rows.Count, 1).End(xlUp).Row
    'Création de la liste des Etablissements sans doublon
    On Error Resume Next
    For L = 1 To Lmax
        CollDir.Add .Cells(L, 1).Text, .Cells(L, 1).Text
    Next L
    On Error GoTo 0
    For L = 2 To CollDir.Count
    .Copy
    'Epurage des données par Etablissement
        Set NWbk = ActiveWorkbook
        With NWbk
            With .Sheets(1)
                        Set Plage = .Rows(Application.Rows.Count)
                        For L2 = 2 To Lmax
                        If .Cells(L2, 1).Text <> CollDir(L) Then
                        Set Plage = Union(Plage, .Rows(L2))
                    End If
                Next L2
                Plage.Delete
            'Copie / collage valeurs de la colonne NOM
                With .Columns(3).SpecialCells(xlCellTypeFormulas)
                    .Value = .Value
                End With
            End With
            TWbk.Sheets(Array("a", "b", "c")).Copy after:=.Sheets(1)
            .SaveAs ThisWorkbook.Path & "\Fichier " & CollDir(L) & ".xls"
            .Close True
        End With
Next L
End With
MsgBox "Les fichiers ont été créés avec succès", 64, "Export réussi !"
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 322
Membres
102 862
dernier inscrit
Emma35400