Masquer colonne et calculer en fonction de la date du jour ?

Bonsoir à tous,

J'ai fait un tableau ou chaque colonne est representée par une date. Le problème c'est que lorsque la date est passée en vrai, je n'ai plus besoin de la colonne. Je pourrais la supprimer manuellement mais comme excel est magique je souhaiterais qu'il masque la colonne une fois que la date est passée.

De plus j'ai une colonne qui calcul les 4 prochaines colonnes à venir (en fonction de la date du jour). Dans cet exemple la colonne en rouge est passée (donc je souhaiterais qu'elle se masque automatiquement) et que la colonne jaune calcul les colonnes 26+27+28+29 étant donné qu'il s'agit des 4 dates à venir.

Et à chaque fois que la date est passée que ça masque la colonne et calcul les 4 suivantes. Si on peut même donner une heure exact je peux le préciser dans un tableau à part par exemple 20/01/2023 - 1h00 (à partir de 1h00 masquage de la colonne 26 et calcul automatique des colonnes 27,28,29,30... J'ai mis que 30 colonnes mais en vrai j'en aurais plus.

Je joins le fichier plus bas pour ceux qui veulent essayer. Merci d'avance

image
11calgw.xlsx (12.27 Ko)

Bonjour

Ci joint ma solution

la macro se lance à l'ouverture du fichier

60calgw.xlsm (16.46 Ko)

A+ François

Merci beaucoup cela fonctionne parfaitement mais comment puis je faire pour l'intégrer à mon tableau d'origine qui fait + de 30 méga et qui contient + d'onglets ?

Je ne connais que les macros simples faites manuellement avec le développeur.

Pouvez-vous m'indiquer comment je peux faire ?

Merci d'avance.

Bonjour

il n'y a qu'une toute petite macro...

Lancez l'editeur (Alt+F11)

Allez dans ThisWorkbook

et recopiez la macro Private Sub Workbook_Open() dans votre fichier

A+ François

Merci pour la réponse.

Je pense avoir bien fait, j'ai copié les données du fichier Thisworkbook et je l'ai remis dans mon fichier excel (voir ci-dessous). Seulement quand je lance mon fichier il continue de m'afficher en premier les données du 16/01/2022 alors que la date est dépassée. Ais-je commis une erreur ?

image image

Par ailleurs je souhaiterais savoir si je peux ensuite agrandir mon tableau et que ça prendra toujours en compte les nouvelles colonnes? Car je vais rajouter de nouvelles dates au fur et à mesure.

2e question est-il possible d'importer les 3 premières colonnes dans un autre tableau en fonction de la colonne qui s'affiche ?

Exemple : Nous sommes le 20 janvier, je devrais donc voir la colonne du 20 janvier s'afficher en premier. Dans un autre tableau sur un autre onglet à chaque ligne ou il trouve Atlanta il affiche 2, à chaque ligne ou il trouve Boston il affiche 1...

Dans l'idéal il s'agirait d'y inclure une formule qui dit : SI(A1=Atlanta)=> alors search (ATLANTA puis la colonne visible).

4calgw-1.xlsm (18.20 Ko)

Je mets le tableau en pièce jointe avec l'Onglet N°2 pour un essai si cela vous dit.

Merci d'avance

Bonjour

Tu mets le nombre de colonne que tu veux... la macro gère...

Est ce que la date du 16 est bien en colonne E ?

ATTENTION! la macro dans thisworkbook a changé (pour le transfert des données sur la feuille 2)

6calgw-1.xlsm (20.96 Ko)

A+ François

Non en effet vous aviez raison la date n'était pas en colonne E mais F maintenant cela fonctionne merci !

Il faut une macro pour l'ensemble du classeur ou une macro par onglet ?

Si j'ai bien compris la je reprends la même macro et j'ai juste à renommer les onglets Feuil1, Feuil2 avec les onglets de mon fichier ?

Car sur l'exemple que je vous ai donné les onglets se nomment Feuil1 et Feuil2 mais en vrai dans mon fichier ils se nomment NbrGW et RECAP et j'ai plusieurs onglets différents.

Je vais faire l'essai en tout cas merci

Option Explicit

Private Sub Workbook_Open()
Dim i As Long, j As Integer
Sheets("Feuil1").Select
For j = 5 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, j).Value < Date Then Columns(j).Hidden = True Else Exit For
Next
Sheets("Feuil2").Range("A2:D" & Rows.Count).ClearContents
Sheets("Feuil2").Range("B1").Value = Cells(2, j).Value
Sheets("Feuil2").Range("C1").Value = Cells(2, j + 1).Value
Sheets("Feuil2").Range("D1").Value = Cells(2, j + 2).Value
For i = 3 To Range("A" & Rows.Count).End(xlUp).Row
Range("D" & i).Value = WorksheetFunction.Sum(Range(Cells(i, j), Cells(i, j + 3)))
With Sheets("Feuil2")
.Range("A" & i).Value = Range("A" & i).Value
.Range("B" & i).Value = Cells(i, j).Value
.Range("C" & i).Value = Cells(i, j + 1).Value
.Range("D" & i).Value = Cells(i, j + 2).Value
End With
Next
End Sub

J'ai essayé de le faire moi même en renseignant les données ci dessous mais cela m'a vidé toutes mes cellules... J'ai du me tromper quelque part.

Mon tableau référence est le suivant :

Dans la colonne J j'ai le nom des clubs (qui correspond à la A dans l'autre fichier) et en BC, BF, BI je voudrais récupérer les données dans l'autre tableau.

J'ai mis le code en bas sauriez vous me dire quel est mon erreur ?

Merci d'avance !

image

Option Explicit

Private Sub Workbook_Open()
Dim i As Long, j As Integer
Sheets("NbrGW").Select
For j = 5 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, j).Value < Date Then Columns(j).Hidden = True Else Exit For
Next
Sheets("RECAP").Range("J3:BK" & Rows.Count).ClearContents
Sheets("RECAP").Range("BC2").Value = Cells(2, j).Value
Sheets("RECAP").Range("BF2").Value = Cells(2, j + 1).Value
Sheets("RECAP").Range("BI2").Value = Cells(2, j + 2).Value
For i = 3 To Range("J" & Rows.Count).End(xlUp).Row
Range("BI" & i).Value = WorksheetFunction.Sum(Range(Cells(i, j), Cells(i, j + 3)))
With Sheets("RECAP")
.Range("J" & i).Value = Range("A" & i).Value
.Range("BC" & i).Value = Cells(i, j).Value
.Range("BF" & i).Value = Cells(i, j + 1).Value
.Range("BI" & i).Value = Cells(i, j + 2).Value
End With
Next
End Sub

Bonjour

Ton image on voit rien...

Quelle ligne les dates qui etaient en ligne 1 ?

De quelle colonne à quelle colonne?

Tu parles de plusieurs feuilles: sont elles identique à la feuille NbrGW?

Quelles sont leurs noms?

Faut il renvoyé les données sur RECAP et dans quelle colonne?

A+ François

Tout d'abord merci beaucoup pour la réponse.

Alors oui je parle de 2 feuilles (comme dans le tableau d'essai)

L'onglet N°1 = NbrGW = Feuil1

L'onglet N°2 = RECAP = Feuil2

En gros il va chercher les données dans le tableau qui se trouve dans NbrGW pour le renvoyer dans celui qui se trouve en RECAP.

Le tableau qui se trouve en Feuil1 correspond bien au tableau qui se trouve dans l'onglet NbrGW.

Le tableau de référence qui se trouve en NbrGW et qui correspond à celui de la Feuil1 contient bien les dates en ligne 1 (voir ci-dessous).

image

Ensuite il faut renvoyer les données dans l'onglet "RECAP" dans les colonnes : BC, BF, BI à partir de la ligne 4 (voir ci-dessous).

Le tableau qui se trouve en récap contient énormément de colonnes ! en tout il va de $A$3:$BS$505

image

Le nom des clubs qui se trouvent en A dans l'onglet NbrGW se trouvent dans la colonne J dans RECAP.

image image

Voila j'espère que vous avez toutes les infos sinon n'hésitez pas !

Merci d'avance.

Bonjour

J'espère avoir répondu à ton problème

4calgw-1.xlsm (20.70 Ko)

A+ François

Alors merci pour le fichier, il y a une bonne et mauvaise nouvelle... La bonne c'est que je reçois bien toutes les données demandées mais le problème c'est que ça efface absolument toutes les autres données déjà enregistrées. Une idée d'ou peut venir le problème ? Merci d'avance.

image image

Bonsoir

Et là...

3calgw-1.xlsm (21.84 Ko)

A+ François

J'ai bien les données qui apparaissent mais il y a un gros problème. Il a laissé toutes les données déjà en place mais il a mis le nom des club dans l'ordre alphabétique en J et laissé vide toutes les autres suivantes. Du coup les clubs qui étaient déjà en place ne correspondent plus du tout. En vrai il y a plusieurs fois la même ligne clubs et son objectif est de chercher chaque ligne qui correspond au club en question sans chambouler le reste.

Voici le tableau de base :

ou l'on voit:

Donc = Dallas, on peut voir aussi qu'il y a 2 Philadelphia (Embiid et Harden), 2 Brooklyn (Durant et Irving)...

image

Et avec le langage VBA il me transforme le tableau comme ceci :

Doncic devient Atlanta, James devient Boston... Les clubs sont classés dans l'ordre alors qu'il ne devrait pas toucher aux clubs.

image

Voila j'espère que vous arriverez à trouver une solution car cela semble être un vrai casse tête.

Bonjour

Les clubs sont dans l'ordre de la feuille NBEGW....

Que veux tu exactement?

Ne peux tu me fournir la feuille RECAP?

A+ François

Bonjour

N'est il pas possible de trier la feuille recap pour que les clubs soient par ordre alphabetique avant de lancer la macro?

A+ François

Bonsoir,

Si ça ce n'est pas un problème s'il faut. Mais dans ce cas la il faudra une macro aussi qui tri automatiquement les clubs par ordre alphabétique dés le lancement du fichier. Personnellement ça ne me dérange pas si c'est juste ça le problème tant qu'après je peux utiliser mes macros personnels pour trier comme je veux. Car j'ai créé plusieurs macros affectées à des boutons afin de trier par notre etc...

Merci d'avance.

Bonjour

Est ce que les données sur la feuille Recap sont en tableau structuré

si oui quand tu clic sur une de ses cellules dans le menu (en haut) à coté de aide tu as Création

et si tu clic sur Création en dessous de Fichier tu as le nom du tableau (j'en ai besoin)

sous ce nom il y a redimensionner le tableau. J'ai besoin aussi de l'adresse qui sera affichée...

A+ François

Bonsoir,

Pour répondre à vos questions :

Oui les données sont bien en tableau structuré et la feuille est protégée.

Le tableau se nomme : Tableau5

Les plages sont les suivantes : $A$3:$BS$505

Merci d'avance !

Bonjour

A tester... Je n'ai pas mis de mot de passe pour la protection...

11calgw-1.xlsm (24.37 Ko)

A+ François

Rechercher des sujets similaires à "masquer colonne calculer fonction date jour"