J’utilise un fichier qui me sert à rapporter les roulements des équipes de mon organisation.
ce fichier hebdomadaire de base (que l’on va appeler template) est alimenté avec des données importées à partir d’un planning annuel (Merci à FFO).
Comme je dois enchaîner les fichiers hebdomadaires, et donc pour faciliter mon traitement, je souhaiterais pouvoir par macro que je lierai à un seul bouton :
enregistrer le fichier avec une nomenclature fixe dans le répertoire du template
protéger toutes le feuilles du classeur, sans mot de passe
protéger la structure du classeur, sans mot de passe
supprimer, dans le classeur enregistré, le bouton ‹ import › du coin supérieur gauche de la première feuille du template (pour peu que ce soit possible)
mais aussi
laisser le fichier source ouvert (pour de nouveaux traitements)
Je joins un fichier dont la structure est identique au fichier de travail.
Par rapport au fichier joint, la nomenclature d’enregistrement souhaitée serait :
"PERM - " (chaîne de caractère fixe)
2023-01-06 (date basse du fichier)
" - " (séparateur pour les deux dates)
2023-01-12 (date haute du fichier)
Soit : PERM - 2023-01-06 - 2023-01-12.xlsm
Remarques:
Il s’agit toujours d’un fichier pour la semaine, donc entre date et date+6.
De ce que j’ai pu lire dans mes premières recherches pour exécuter l’enregistrement tout en laissant le fichier source ouvert, d’aucuns postulent qu’il serait plus judicieux de passer par un enregistrement du fichier et une réouverture du fichier source.
Je vous avoue avoir rapidement abandonné à tenter de bidouiller une macro moi-même.
J’ai déjà réussi de petites choses ou des adaptations mineures, mais le jeune autodidacte que je suis sèche.
Merci d’avance pour toute aide apportée.
Bonne journée.
Ci-joint ma proposition
Pour déterminer le premier onglet et le dernier onglet afin de construire le nom du fichier à enregistrer
" PERM - 2023-01-06 - 2023-01-12.xlsm"
et notamment la première date et la dernière date qui le compose le traitement dans les onglets jour du lundi au dimanche analyse dans chacun de ceux-ci la date en cellule « B3 »
Donc bien veiller à ce qu’elle soit présente dans tous ces onglets
L’enregistrement s’effectue dans le même répertoire que celui du fichier source
Une macro à cette fin est disponible fichier ci-joint elle porte le nom « Enregistrement »
Bonjour FFO,
Merci (encore) pour ta proposition qui reprend toutes les actions à effectuer.
Néanmoins, suite à mes test, je rencontre deux ‹ bizarreries ›:
Ta macro fonctionne parfaitement sur le fichier test envoyé, à l’exception des semaines à cheval sur deux mois. J’ai une erreur à l’exécution à la ligne Selection.Delete : La méthode Delete de la classe Range a échoué.
Mais par contre, dans mon fichier de travail, où j’ai simplement recopié la macro, les différentes actions se succèdent mais lorsque le fichier Template se rouvre, son contenu est identique au fichier enregsitré, càd qu’il présente les même modifications apportées au fichier ‹ enregistré sous › : il est protégé (onglets et structure) et les boutons sont effacés.
J’ai passé mon après-midi à faire différents test mais je n’ai pu identifier la cause de ce comportement. Le fichier test est réalisé à partir de mon fichier de travail auquel j’ai supprimé les lignes inférieures. Je ne sais pas ce qui différencie les deux fichiers.
Une idée de pistes à explorer (sans que je veuille exagérer, hein ) ?
Merci
HB
Quand est-il ?
Sinon peux tu me transmettre un fichier qui génère cette anomalie que je l’analyse
Finalement j’ai réussi à provoquer le défaut et apporter la correction adaptée dans la procédure fichier ci-aprés
testes le et dis moi :
« mais lorsque le fichier Template se rouvre, son contenu est identique au fichier enregsitré, càd qu’il présente les même modifications apportées au fichier ‹ enregistré sous › : il est protégé (onglets et structure) et les boutons sont effacés. »
Comment est ton fichier avant l’exécution du traitement ?
Celui-ci prépare le fichier ouvert tel que souhaité (protection onglets structure boutons à effacer) avant de l’enregistrer sous le nouveau nom
Donc en d’autre terme cette préparation ne peux concerner que le fichier enregistré seul lui est enregistré et non celui initial qui lui ne subit aucun enregistrement
Si à son ouverture il se trouve dans le même état c’est qu’il est déjà de base
Pas d’autre possibilité car aucun enregistrement par le traitement n’est effectué à son sujet
Donc ton fichier initial avant l’exécution de la macro doit être sans protection onglet et structure et avec son bouton « IMPORT »
Vérifies cet état corriges ce qui doit l’être pour l’avoir enregistres puis tu exécutes seulement après la macro « Enregistrement »
Bonjour,
On avance…
Merci pour l’adaptation de la macro qui fonctionne parfaitement sur les semaines à cheval sur deux mois.
Je pense avoir par ailleurs identifié la cause du dysfonctionnement de la macro sur mon fichier de travail.
J’avais déjà vérifié hier l’état du fichier (onglets et structure sans protextion, bouton présent) mais sans succès.
Ce matin j’ai fait d’autres essais.
Reprenons:
Ta macro fonctionne sur les fichiers tests envoyés.
Ta macro ne fonctionne pas sur mes fichiers de travail.
A chaque fois, les onglets et structures sont non protégés et les boutons sont bien présents.
Je me suis donc interrogé sur ce qui différenciait les fichiers. Et notamment le fait que pour envoyer les fichiers tests j’avais supprimé les données personnelles via l’inspecteur de document/propriétés du document et informations personnelles.
Et bingo… la macro fonctionne sur mon fichier de travail si je refais la même manipulation de suppression des informations personnelles.
Sais-tu pourquoi cette suppression des données personnelles pose problème ? Je me demande si ce n’est pas une question de chemin d’accès absolu au classeur et/ou les propriétés du serveur de document.
Bref, si une solution existe, je prends volontiers. Sinon, je verrai dans quelle mesure cela pourrait me poser problème.
Merci pour cette réponse détaillée
Concernant ton travail
Si ceci est vérifié donc correspond au fichier à son ouverture :
" * A chaque fois, les onglets et structures sont non protégés et les boutons sont bien présents."
Sachant que le traitement ne réalise qu’un enregistrement celui du fichier traité avec le nom « Perm-date début-date fin.xlsm » en laissant donc intact celui qui à servi à le confectionner si celui-ci à sa réouverture n’est plus exactement le même c’est un élément extérieur qui en est la cause pas son exécution
« Et notamment le fait que pour envoyer les fichiers tests j’avais supprimé les données personnelles via l’inspecteur de document/propriétés du document et informations personnelles. »
Je ne connais pas cette fonctionnalité et donc pourrais difficilement t’apporter des éléments la concernant
Tu pourrais faire un essai sur un de tes fichiers de travail qui engendre ce phénomène mais de ton PC personnel chez toi peut être l’environnement informatique est à incriminer
A voir
Je ne peux hélas t’en dire plus il faudrait que je sois confronter à la situation pour l’analyser et tenter de la résoudre ce qui n’est pas le cas
A ta disposition pour d’autres interrogations si je peux
J’ai encore procédé à quelques vérifications. Le problème se situe bien au niveau de l’environnement informatique.
La macro s’exécute correctement en local quelque soit le paramètre de confidentialité (suppression ou non des données personnelles). Sous drive Office365, elle ne fonctionne correctement que si l’enregistrement des données personnelles est désactivé.
Ton deuxième fichier fait donc le taf. Beau boulot et merci. Je passe en solutionné.
Bonne journée.
HB
Bonjour,
Je repasse ici avec des infos complémentaires quant au comportement erratique du code sous drive O365.
J’ai terminé mon fichier et il est prêt à entrer en production. Pendant que je le finalisais, j’ai constaté que le mauvais fonctionnement du fichier n’était pas lié aux paramètres de confidentialité comme évoqué. Il s’agit en fait d’une conséquence de cet état, conséquence qui est … l’enregistrement automatique.
En local, pas d’enregistrement automatique : le code fonctionne, le fichier ne se corrompt pas.
Sous O365, paramètres de confidentialité activés (et donc pas d’enregistrement automatique) : le code fonctionne, le fichier ne se corrompt pas.
Sous O365, paramètres de confidentialité désactivés (et donc enregistrement automatique activé) : le fichier perdait les boutons. En fait, un enregistrement du template intervenait avant que le fichier de sortie ne soit enregistré et avant que le template ne soit de nouveau ouvert.
J’ai donc un peu joué avec les autosaveon False/True pour éluder le problème et les messages perturbants pour les utilisateurs.
Je peux donc utiliser le fichier et faire tourner la macro sans aucun problème.
Merci encore
Bonjour
Merci pour tout ce compte rendu
Ravi que tu puisses fonctionner dans ton environnement avec cette macro
N hesites pas pour tout besoin
Au plaisir de te lire