Verrouillage colonnes mois par mois

Bonjour,

Etudiante en alternance en contrôle de gestion, je patine complet avec une macro.

Le fichier en question est une trame d'alimentation du logiciel cognos TM1. Ce logiciel s'alimente via excel grâce à la formule =DBS(...). Il s'agit d'y faire remonter plusieurs indicateurs, mois par mois.

Le problème, c'est qu'à chaque ouverture du fichier d'alimentation, les données sont remontées dans TM1, ce qui implique le risque d'écraser des données déjà envoyées.

Mon but serait donc, grâce à une macro, de copier coller valeur, au fur et à mesure, les données des mois déjà envoyés à leur place initiale, afin d'écraser les formules et ainsi d'éviter de modifier les données envoyées dans TM1.

Il faudrait donc, à la fin de chaque mois, faire comprendre à la macro en question qu'elle doit passer à la colonne suivante et donc au mois suivant, en fonction de si les formules des mois précédents ont déjà été écrasées..

J'ai utilisé l'enregistreur de macro pour pouvoir créer les codes des copier-coller valeur, mais je ne vois pas comment ajouter ma condition...

J'espère avoir été assez claire, j'avoue que ce n'est pas facile à expliquer à l'écrit...

Je vous joint la trame d'alimentation en question, c'est normal que des #NOM? apparaissent partout, c'est parce que le fichier s'ouvre sans connexion à TM1.

Merci d'avance pour votre aide,

Bien cordialement,

Juste une question :

Cette fonction (inconnu de moi à ce jour) envoie des informations à l'ouverture du fichier, si je décompose les données qu’elle envoie je ne vois pas (pour la première ligne par exemple) ou est la valeur "Pénalités" quelle doit communiquer pour ce mois là?

merci

La valeur pour chaque indicateur se trouve en fait sur un autre fichier, identique à celui la, mais sans les formules. Le logiciel TM1 nous oblige à travailler comme ça, il faut que la formule aille « chercher » la donnée dans une autre cellule...

Il s’agit du premier membre de la formule, juste après la parenthèse. Les autres membres correspondent en fait aux « dimensions » du cube TM1 qu’on alimente..

C'est ce que j'avais compris.

Lorsque vous lancez ce programme excel, il déverse des données, a t il un retour qui lui dit que l'opération a réussi?

Et peut-il stocker cette information?

Non, aucun retour pour dire que les données ont bien été importées. C’est automatique, et c’est ça qui crée le problème d’ailleurs...

Et oui TM1 stocke les informations, c’est une espèce de base de donnée qui range les informations des « cubes » à plusieurs dimensions.

Ce peut-il que l'opération de déversement vers TM1, à l'ouverture de votre fichier, ne se fasse pas pour n'importe quelle raison, ou c'est du 100% sûr?

Le fichier exemple possède les formule d'export pour tous les mois de l'année, est ce toujours le cas et c'est le fichier qui détient les valeurs qui, lui, est mis à jour à l'avancée dans le temps?

Oui c’est possible qu’elle ne se fasse pas, si un des membres de la formule n’est plus présent ou n’a pas la bonne syntaxe.

Et oui, c’est le fichier qui détient les valeurs qui est rempli au fur et à mesure du temps !

Bien:

TM1 reçoit mais Sans retour

Le fichier TrameAlimV2 possède le code d'envoi à son ouverture

Un dossier secondaire détient les valeurs à communiquer à TM1

Proposition:

Dans TrameAlimV2

Excel pouvant lancer des procédures VBA liées à des événements

Imaginons une procédure lancée à sa fermeture

Elle aurait comme fonction :

  • ---Lire le fichier de données
  • --- A chaque donnée trouvée elle enlèverait la formule "Dbs(..)" et la remplacerait par la donnée
  • ---puis sauvegarderait le fichier dans son nouvel état, peut-être sous un nouveau nom.

Ne pouvant contrôler le flux réel entre TM1 et TrameAlimV2 je ne vois pas d'autre solution

Cdt

Bonjour,

Cela me semble pas mal, cependant ça soulève une question : à l'ouverture de la trame d'alimentation les données sont envoyées, des "valeurs" apparaissent à la place des "#NOM", mais au final derrière c'est toujours les formules DBS... la formule fait simplement "apparaître" les valeurs qu'elle a lu sur le fichier source (un chiffre si c'est un chiffre, du vide si c'est du vide). Cela ne posera pas de problème à la macro pour comprendre quelles colonnes écraser ?

Merci pour tout !

Je ne le voyais pas comme ça,

Lorsque "V2" s'ouvre il communique a TM1 tout ce qu'il sait du fichier contenant les données(appelé ici "Données")

J'ai donc deux fichiers : V2 et Données

Lorsque V2 va être fermé, il à déjà fait son travail avec TM1, alors il accède a "Données" , lit les cellules occupées et met dans ces propre cellules correspondantes les valeurs trouvées (dans "Données") à la place des formules. Puis il peut s'enregistrer dans l'état avec son nom habituel ou un nouveau nom incrémenté.

Il faut donc que V2 puisse accéder à "Données" avant d'être 'Close'

Il y a la solution de créer dans V2 des liaisons au fichier "Données", tout cela dans une feuille dédiée,Lorsque le classeur "Données" et V2 sont ouverts sur le même ordinateur, les liens sont automatiquement mis à jour. Lorsque vous ouvrez V2 et que le classeur source "Données" n’est pas ouvert il faut mettre à jour les liens (sans ouvrir "Données".

Remarque d'un néophyte :

Pourquoi les données ne sont pas dans V2?

Cdt

D'accord je vois ! Mais du coup il faudrait avoir une copie de la feuille "données" sur le classeur V2 et ça serait cette feuille qui serait en lien avec les formules ? Ou c'est faisable depuis le classeur séparé ?

Les données ne sont pas dans "V2" justement car on veut éviter que les opérationnels quand il remplissent leur données n'écrasent ou modifie des formules. À cause de TM1 on est obligé de fonctionner sur le modèle fichier de données + trame d'alimentation, qui pourraient, certes, être dans le même classeur Excel, mais on préfère éviter. En plus, pour que les données s'envoient dans TM1 il faut ouvrir le classeur V2 "via TM1", ce que les opérationnels ne peuvent pas faire car ils n'ont pas la licence. Du nous a semblé inutile et risqué de leur en donner l'accès.

Encore merci

Je n'abandonnerai pas!

Sachez que le classeur V2 peut avoir des "LIAISONS EXTERNES à d'AUTRE CLASSEURS" donc avoir des liaisons vers le classeur "Données"

Ces liaisons vous pouvez les gérer sans problème

il suffit que V2 et "Données" soient sur le même ordinateur

Le fichier Données n'a pas a être ouvert

Vous ouvrez le fichier V2, il envoi les données (du fichier Données") a TM1 avec vos formules "CUBE"

Vous avez terminé et décidez de fermer V2

Là une procédure liée à la fermeture de V2 s’exécute

Elle fait en tout premier une "Mise à jour" des liens qui lient V2 à "Données" ( et je dis bien "Donnes" n'est pas ouvert)

Ayant les dernières valeurs de "Données" cette procédure peut faire ce que vous désirez tant : remplacer les formules d'envoi à TM1 par les valeurs trouvées dans "Données" puis V2 se sauvegarde

V2 n'est d'aucune action sur "Données" il ne fait que lire les valeurs

Dites moi si Alexandre Dumas fils m'aurait répondu :

Le plus grand mérite dans un discours, c'est la clarté.

CDT

Je confirme, Alexandre Dumas fils aurait répondu :

Le plus grand mérite dans un discours, c'est la clarté.

Merci pour tout, ça semble en effet être LA solution !

Rechercher des sujets similaires à "verrouillage colonnes mois"