TCD avec nom de colonnes variable

Bonjour le Forum,

Je crée une macro pour réaliser un TCD à partir d'un tableau avec des colonnes dont les cellules de nom de colonne sont variables et régis par la formule ="S" & NO.SEMAINE.ISO(MAINTENANT()+7*(4-3)) & " " & ANNEE(MAINTENANT()+7*(4-3)) mais lorsque j'enregistre ma macro avec l'enregistreur, il ne prend pas en compte la colonne variable et ne garde que la valeur (exemple : S3 2020 en première valeur pour cette semaine) alors que cette colonne est amenée à changer sur des prochains fichiers et surtout dans le temps vu que chaque nouvelle semaine la formule change.

P.S : La formule en VBA : "=""S"" & ISOWEEKNUM(NOW()+7*(" & i & "-3)) & "" "" & YEAR(NOW()+7*(" & i & "-3))"

Je vous joins mon fichier pour mieux visualiser mon problème ainsi que le début de macro que j'ai réalisé !

Cordialement,

Pierre

3macro-tcd.xlsm (458.08 Ko)

Excusez moi, voici le fichier avec le TCD final que j'aimerai obtenir (je n'ai pas ajouté toutes les semaines mais la macro le fera)

19macro-tcd.xlsm (499.60 Ko)

Bonjour,

En effet, que ce soit la structure en "tableaux excel" ou lors de l'établissement d'un TCD, le nom des colonnes est fixe.

En structure tableau, le nom de la colonne doit être figé (les formules sont alors remplacées par leurs valeurs).

Il y a 3 solutions :

- après modification par en-têtes de colonnes, tu supprimes et recrées alors un TCD avec une macro chaque fois que nécessaire.

ou bien

- tu ne mets que les n° de semaine en-tête des colonnes et seulement cela, en "dur", tu ajoutes un critère sur l'année que tu mets dans une cellules, et tu modifies les formules pour répartir les valeurs dans les colonnes K et suivantes en fonction de l'année choisie

ou bien

- tu changes complètement la structure des données pour avoir les dates de reprog les unes en dessous des autres et tu ajoutes un colonne qui calcule la semaine : le TCD s'appuiera alors sur cette valeur

Merci beaucoup Steelson, je pense prendre la 3ème option mais je ne vais pas tout changer je vais simplement ajouter des colonnes supplémentaires à la fin de mon tableau ou l'on aura les semaines et les années correspondantes. Merci encore pour ton aide, je clos le sujet.

Bonjour à tous

Avec 2016 tu peux restructurer ton tableau inadapté au TCD, ce qui d'ailleurs évitera de le faire par VBA puisqu'un seul champ nécessaire en valeur

Ce qui n'est pas clair dans ton exemple c'est si tu veux ou non prendre l’ensemble des semaines et, si non, lesquelles

Exemple ci joint

35tcd-semaines.xlsx (537.76 Ko)

Bonjour Chris,

Le tableau que tu as réalisé est exactement celui qu'il me faut puisque j'ai besoin de toutes les semaines et toutes les années. Peux-tu m'expliquer comment tu l'as réalisé ? Je suis encore novice avec excel ...

Merci pour ta réponse !

Bonjour

Fait avec PowerQuery

J'ai d'abord créé une plage nommée Data par formule (voir dans le gestionnaire de noms)

Ensuite

  • Données, Obtenir des données, A partir d'autres sources, Requête vide : ce qui ouvre PowerQuery
  • dans la barre de formule taper : =Excel.CurrentWorkbook(){[Name="Data"]}[Content]
  • onglet Transformer, Utiliser la 1ère ligne pour les en-têtes
  • sélectionner toutes les colonnes sauf les semaines, clic droit, Supprimer le TCD des autres colonnes (ou dévipoter les autres colonnes selon version)
  • sélectionner la colonne Attribut, clic droit, Fractionner la colonne, Espace, délimiteur le + à gauche
  • dans la barre de formule remplacer Attribut.1 par Semaine et Attribut.2 par Année
  • sélectionner la colonne Semaine, clic droit, Remplacer les valeurs, S par rien
  • sélectionner les colonnes Semaine et Année, Accueil, Type de données : nombre entier
  • sortir par Accueil, Fermer et charger, connexion seulement
  • construire le TCD en utilisant la connexion Data comme source

En faite je regarde jusqu'à 5 ans dans l'idéal et je m'intéresse aux Prog et aux 5 Reprog et pas aux Date de butée. J'avais réalisé un tableau avec une macro pour écrire 1 dans chacune des semaines et faire la planif moi même mais je ne savais pas que l'on pouvait le faire nous même facilement avec excel. Donc si il est possible de créer ce tableau et d'insérer dans le tableau les prog et reprog à la place des dates butées et de faire un inventaire des opérations jusqu'à 5 ans ce serait magique.

Je viens de voir votre message je vais essayer ! Merci beaucoup

RE

Je verrai en fin d'aprem ou demain pour ta nouvelle demande

Pas de soucis ! J'ai une question plus globale en réalité pour essayer de me simplifier le traitement de ces données, est-il possible de réaliser ce tableau avec un détail des opérations par semaines et par années jusqu'à 5 ans en ne prenant en compte que les lignes A à J de mon tableau initiale où sont répertoriées les dates des Prog et Reprogs (comme suit dans le document joint) sans avoir besoin de réaliser une planif moi même avec une macro comme dans le document précédemment envoyé avec les colonnes S** 20**. Plus précisément, est ce que excel peut directement identifier les semaines et l'année correspondante à partir de la date de Prog et des dates de Reprog et me les répertorier dans un tableau comme réalisé précédemment ?

J'ai d'abord créé une plage nommée Data par formule (voir dans le gestionnaire de noms)

Ensuite

  • Données, Obtenir des données, A partir d'autres sources, Requête vide : ce qui ouvre PowerQuery
  • dans la barre de formule taper : =Excel.CurrentWorkbook(){[Name="Data"]}[Content]
  • onglet Transformer, Utiliser la 1ère ligne pour les en-têtes
  • sélectionner toutes les colonnes sauf les semaines, clic droit, Supprimer le TCD des autres colonnes (ou dévipoter les autres colonnes selon version)
  • sélectionner la colonne Attribut, clic droit, Fractionner la colonne, Espace, délimiteur le + à gauche
  • dans la barre de formule remplacer Attribut.1 par Semaine et Attribut.2 par Année
  • sélectionner la colonne Semaine, clic droit, Remplacer les valeurs, S par rien
  • sélectionner les colonnes Semaine et Année, Accueil, Type de données : nombre entier
  • sortir par Accueil, Fermer et charger, connexion seulement
  • construire le TCD en utilisant la connexion Data comme source

Joli ! joli, joli

Bon, quand on me dit que PowerQ ce n'est pas de la prog ben in fine je me demande quel autre terme on peut y mettre !

Mais cela dit, c'est en effet puissant, et a priori accessible (quoique) car il s'agit en fait de prog par apprentissage et donc bien cadré. Il faut que je m'y mettes sérieusement !

RE

Pas de soucis ! J'ai une question plus globale en réalité pour essayer de me simplifier le traitement de ces données, est-il possible de réaliser ce tableau avec un détail des opérations par semaines et par années jusqu'à 5 ans en ne prenant en compte que les lignes A à J de mon tableau initiale où sont répertoriées les dates des Prog et Reprogs (comme suit dans le document joint) sans avoir besoin de réaliser une planif moi même avec une macro comme dans le document précédemment envoyé avec les colonnes S** 20**. Plus précisément, est ce que excel peut directement identifier les semaines et l'année correspondante à partir de la date de Prog et des dates de Reprog et me les répertorier dans un tableau comme réalisé précédemment ?

TCD Juste avec dates.xlsx

SI j'ai bien compris en utilisant la semaine ISO et non US est-ce cela ?

tcd semaines

Exactement, et en calculant la semaine iso directement à partir de la date de prog ou reprog situées des colonnes D à J dans le tableau initial.

P.S : le tableau réalisé est celui qu'il me faut mais les cases 1 à 7 en dessous des années devrait être des semaines de 1 à 52 ou de 2 à 53 selon l'année et le numéro de semaine iso correspondant.

Merci grandement pour toute l'aide que tu m'apportes actuellement Chris

RE

Oui, j'ai récupéré sur le net une fonction qui donne la semaine iso mais aussi le jour de la semaine et j'ai mal adaptée

Tu peux copier depuis mon exemple la fonction fx_semaineISO puis la coller dans PowerQuery dans ton classeur (juste sélectionner son nom à gauche puis copier et, dans le Powerquery destination, cliquer dans le vide à gauche et coller)

Le reste est plus simple que la 1ère solution :

J'ai mis les données sous forme de tableau nommé Data

Ensuite

  • depuis une cellule du tableau Données, A partir d'un tableau : ce qui ouvre PowerQuery
  • coller la fonction puis revenir à Data
  • sélectionner les colonnes Date de butée et Numéro du MR et les supprimer
  • sélectionner les colonnes Série et Code opération, clic droit, Supprimer le TCD des autres colonnes (ou dévipoter les autres colonnes selon version)
  • dans la barre de formule remplacer Valeur par Année
  • supprimer la colonne Attribut
  • onglet Ajouter une colonne, Appeler une fonction personnalisée : nom Semaine, fonction fx_semaineISO, LaDate, dérouler : nom de la colonne puis Année
  • sélectionner la colonne Année puis Transformer, Date, Année
  • filtrer Année entre 2020 et 2024 puis dans la barre de formule, pour rendre glissantes les 5 années, remplacer
    2020 par Date.Year(DateTime.LocalNow())
    2024 par Date.Year(DateTime.LocalNow()) +4
  • sortir par Accueil, Fermer et charger, connexion seulement
  • construire le TCD en utilisant la connexion Data comme source
17tcd-semaines2.xlsx (131.52 Ko)

Je vais essayer d'effectuer ca ! Je reviens vers toi si j'ai un soucis Merci beaucoup pour cette solution

Ca marche super bien ! Franchement merci beaucoup J'utiliserai un peu plus PowerQuery à l'avenir

Rechercher des sujets similaires à "tcd nom colonnes variable"