Je vous contacte car je n’arrive pas à réaliser ce que je souhaite dans un fichier Excel
Le but de ce fichier est de suivre des indicateurs quotidien, avec un affichage à la semaine
Ces informations sont sur le plan horizontal
J’aimerais qu’une fois la semaine écoulée, une nouvelle semaine vierge apparaisse dans le même format, mais que la semaine d’avant soit masquée (pour n’avoir à l’affichage que la semaine en cours)
J’ai essayé de mettre un filtre horizontal pour filtrer sur la ligne 3 et choisir ma « Working week » en cours, mais cela ne marche pas (ici j’ai mis 3 semaines pour exemple mais dans mon fichier réel il y en aura 53)
sans VBA sera difficile
un essai, quand vous ouvrez le fichier, on cherche le numéro de la semaine (ISO) et cache les autres semaines.
Maintenant on est semaine 52 ! Affichage_choix_semaine.xlsm (30,7 Ko)
Merci Cow18 (et très beau chat !)
Ca me semble pas mal, il faudra voir ce que ça dit la semaine prochaine, car j’avais renseigné à partir de CW01, donc dans l’exemple le CW52 a été modifié à la main par vos soins ?
Je ne vois plus apparaître CW01 en « unhidant » les cellules
Autre question : la macro est-elle directement intégrée au fichier ?
Si mes collègues l’ouvrent, fonctionnera-t-elle ?
Je n’y connais pas grand chose en VBA
oui, j’ai modifié à la main ce CW52, parce qu’il n’y avaient que les 3 premieres semaines. Dans votre vrai fichier (avec toutes les 52 semaines), la macro montrera aujourd’hui la semaine 52, disons les colonnes 258:262 (environ).
La semaine prochaine, c’est iso-semaine 1 et la macro montrera les colonnes D:M…
Oui, vous collègues, avec un copie de ce fichier, cela fonctionnera aussi pour eux. Au moment où ils ouvrent le fichier, la macro fait son travail.
Si la semaine est introuvable, toutes les colonnes sont visible.
C’est parfait merci beaucoup !
Je vais voir comment cela évolue
Comment faire pour que la macro soit liée à un fichier ?
Car j’ai trois autres fichiers pour lesquels je devrais appliquer la même logique - seule la mise en forme changera car les indicateurs seront différents, comme il s’agit d’autres équipes qui auront leur propre tableau de bord
J’ai l’impression que cela ne fonctionne pas à 100% @taz067 , le fichier affiche toutes les semaines quand je l’ouvre
Dois-je faire une manipulation spéciale ?
Comment faire pour que la macro soit liée à un fichier ?
Car j’ai trois autres fichiers pour lesquels je devrais appliquer la même logique - seule la mise en forme changera car les indicateurs seront différents, comme il s’agit d’autres équipes qui auront leur propre tableau de bord
Comment faire pour que la macro se lance « automatiquement » ? Ou dois-je passer par l’onglet développeur → macro → run ?
Il faut que je sache comment procéder pour expliquer la manip aux équipes si besoin
Hello,
Soit, il faut peut etre adapté le code VBA pour le numero de semaine j’ai appliquer un format personnalisé, ou alors, c’’est parce que la feuille commence a semaine 01 et comme ca ne correspond pas a la semaine en cours ca ne la détecte pas encore
Sinon pour lié la macro a un autre fichier il suffit de copié le code ou le module et le mettre dans le fichier de destination, mais la structure des fichiers doit etre la même, sinon il faudra adapté le code VBA
bonjour,
je ne connais pas votre niveau de VBA, j’éspère que ceci suffit
Dans l’editeur VBA, vous trouvez « Thisworkbook » et là-dedans on a cette macro, qui est lancée au moment où on ouvre le fichier. Donc cette partie est automatique. Si le fichier est ouvert le dimanche soir et on passe minuit vers la semaine suivante, pour le moment rien est prévu pour que les semaines s’adaptent. Mais, je ne pense pas que cela sera le cas chez vous ??? A tout moment, on peut lancer la macro « MontrerSmaineActuelle » avec ALT+F8.
Private Sub Workbook_Open()
MontrerSmaineActuelle
End Sub
Aussi avec ce Alt+F8, on peut modifier la macro, mais j’ai déplacé les variables de la macro vers les 3 premières lignes du module. Vous verrez là le nom de la feuille, la ligne qui contient les numéros des semaines et la premiere colonne. Je pense que cela suffira pour adapter aux autres fichiers.
Donc pour ces autres fichiers, vous copiez le contenu de « thisworkbook » vers cet autre fichier et vous copiez aussi le module1 vers cet autre fichier + eventuellement modifier un ou plusieurs paramètres.
Pour ce format personnalisé de @TAZ067, j’ai ajouté un 4eme paramètre au début du module, alors vous avez le choix Affichage_choix_semaine.xlsm (31,7 Ko)
@Cow18 mon niveau VBA est proche du zéro, je sais enregistrer des macros via le bouton « record » et faire des ajustements mineurs une fois le code écrit tout seul
Mais je pense avoir compris vos explications pour adapter votre code à mes autres fichiers (si ce n’est pas le cas je reposterai un message)
Concernant les cellules masquées, elles ne le sont que jusqu’aux colonnes « NK », alors que j’en ai qui courent jusqu’à « TM »
Est-ce lié à ceci ?
.Cells(Ligne, Colonne).Resize(, 53 * 7).EntireColumn.Hidden = True
Que sigifnie la formule 53 * 7 ?
colonne NK = colonne 375
53 semaines * 7 jours par semaine = 371 colonnes et si la première semaine commence en colonne C (=3eme), cela veut dire 3+371-1 = 373 comme dernière colonne, écart de 2, Il y a des colonnes supplémentaire quelque part ?
Sinon, vous pouvez exagérer, remplacez « .Resize(, 53 * 7) » par « .Resize(, 400) », comme ça vous avez 400 colonnes à cacher/montrer, presque 30 colonnes supplémentaires (attention, n’oubliez pas la virgule avant ce chiffre)
c’est parfait, ça fonctionne à merveille !
un grand merci
dès jeudi j’appliquerai à mes autres fichiers voir si j’arrive à adapter le tout et vous tiendrai au courant !
encore merci et un très bon réveillon !
j’ai réussi à adapter la formule à mes autres fichiers, et je crois même avoir pu adapter le code pour un format mensuel - ça a l’air de fonctionner, je croise les doigts car février n’arrive pas tout de suite pour vérifier
merci beaucoup @Cow18 et @taz067 pour le temps et l’aide accordés, vous m’avez ôté une belle épine du pied !