Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment initier un masquage de colonne

5 réponses
Avatar
Nadia
Hello a tous,

Je voudrais savoir si une macro existe pour masquer une ou plusieurs
colonnes
selon qu'elle ne contient pas de données dans une cellule spécifique (AG 7).

J'airais aimé, sur un tableau avec des dates pouvoir masquer
la colonne qui ne comporte pas de 31e jour selon les mois, ainsi que
les 29;30;31 de février (si février n'est pas bissextile).

A titre indicatif :
Les dates dans les colonnes de mon tableau, ne sont pas inscrite une
à une, mais selon une formule qui me donne les dates journalières, selon le
mois et l'année
inscrite dans une cellule du tableau.

Cela donne, selon les mois impaires, la cellule AG 7 est vide, car le jour
du 31 ne s'y inscrit pas.

dans ces conditions, puisque cette cellule est vide (les mois impaires), je
voudrais qu'elle se
masque toute seule.

Qui aurait la bonté de me venir en aide?

Salutations

Nadia

5 réponses

Avatar
E KERGRESSE
Salut Nadia,

Une réponse peut être celle-là

If Range("AG7").value = "" then

Columns(Range("AG7").Column).Hidden = True

End if

Pour ce qui est de masquer tes colonnes en fonction du nombre de jours du
mois, il faudrait que tu expliques dans quel contexte tu es amenée à générer
ces colonnes en trop. Il existe en effet dans Excelabo.net, un tas de
générateurs de calendriers qui t'affranchissent de ce problème.

http://www.excelabo.net/moteurs/recherche.php , tu tapes ensuite Calendrier

En ce qui me concerne, je me suis servi d'un de ces calendriers que j'ai
modifié pour me mettre les dates en ligne ou en colonne sur un intervalle
défini.

Cordialement.




"Nadia" a écrit dans le message de news:
#
Hello a tous,

Je voudrais savoir si une macro existe pour masquer une ou plusieurs
colonnes
selon qu'elle ne contient pas de données dans une cellule spécifique (AG
7).


J'airais aimé, sur un tableau avec des dates pouvoir masquer
la colonne qui ne comporte pas de 31e jour selon les mois, ainsi que
les 29;30;31 de février (si février n'est pas bissextile).

A titre indicatif :
Les dates dans les colonnes de mon tableau, ne sont pas inscrite une
à une, mais selon une formule qui me donne les dates journalières, selon
le

mois et l'année
inscrite dans une cellule du tableau.

Cela donne, selon les mois impaires, la cellule AG 7 est vide, car le jour
du 31 ne s'y inscrit pas.

dans ces conditions, puisque cette cellule est vide (les mois impaires),
je

voudrais qu'elle se
masque toute seule.

Qui aurait la bonté de me venir en aide?

Salutations

Nadia




Avatar
Nadia
Hello Éric,
Merci de ta réponse.
Je m'empresse d'essayer de te répondre:

Pour ce qui est de masquer tes colonnes en fonction du nombre de jours du
mois, il faudrait que tu expliques dans quel contexte tu es amenée à
générer

ces colonnes en trop. Il existe en effet dans Excelabo.net, un tas de
générateurs de calendriers qui t'affranchissent de ce problème.


Il s'agit en fait d'un tableau (sur papier) qui m'a été fourni et que j'ai
remis en forme
sur Excel, pour calculer les heures de présences pour des bénévoles, dans
une association.

Ce tableau, est avant tout, pour calculer les heures selon les rubriques,
ainsi que
selon les dates (journalières). total en ligne ainsi qu'en colonne.

J'ai fais mes colonnes de dates, selon le model : C 7 ---> à AG 7, pour que
les dates
du 1er au 31. s'insèrent automatiquement et qu'une couleur s'affiche pour
présenter les
week-end. (samedi juste la date en couleur, et le dimanche la colonne datée
en couleur).

Comme il n'y a pas chaque mois 31 jours (même 28 dans certains cas ;-)) ),
je me suis demandée s'il y avait une possibilité de masquer ces colonnes non
utilisées.
Ceci en sachant que les dates sont générées automatiquement, lorsque
j'inscris
dans une cellule le mois et dans une autre cellule l'année.

Voici la formule que j'ai généreusement reçue pour faire une partie de ce
tableau.
=SI(MOIS(DATE($AD3;TEXTE(1&$R3;"m");COLONNE()-2))>TEXTE(1&$R3;"m")*1;"";DATE
($AD3;TEXTE(1&$R3;"m");COLONNE()-2))
Donc, cette cellule AG 7, même si elle ne comporte pas de date, comporte
cette formule.

Pour cette raison que je ne suis pas allée chez Misange (et son site
(snifff)) pour chercher un tableau
daté et déjà complet.

Je vais essayer et je te donnerais réponse, de la bonne marche de cette
formule

Salutations

Nadia

"E KERGRESSE" a écrit dans le message
de news:%
Salut Nadia,

Une réponse peut être celle-là

If Range("AG7").value = "" then

Columns(Range("AG7").Column).Hidden = True

End if

Pour ce qui est de masquer tes colonnes en fonction du nombre de jours du
mois, il faudrait que tu expliques dans quel contexte tu es amenée à
générer

ces colonnes en trop. Il existe en effet dans Excelabo.net, un tas de
générateurs de calendriers qui t'affranchissent de ce problème.

http://www.excelabo.net/moteurs/recherche.php , tu tapes ensuite
Calendrier


En ce qui me concerne, je me suis servi d'un de ces calendriers que j'ai
modifié pour me mettre les dates en ligne ou en colonne sur un intervalle
défini.

Cordialement.


Avatar
Nadia
Cher Éric,

cela ne marche pas.

salutations

Nadia


"E KERGRESSE" a écrit dans le message
de news:%
Salut Nadia,

Une réponse peut être celle-là

If Range("AG7").value = "" then

Columns(Range("AG7").Column).Hidden = True

End if

Pour ce qui est de masquer tes colonnes en fonction du nombre de jours du
mois, il faudrait que tu expliques dans quel contexte tu es amenée à
générer

ces colonnes en trop. Il existe en effet dans Excelabo.net, un tas de
générateurs de calendriers qui t'affranchissent de ce problème.

http://www.excelabo.net/moteurs/recherche.php , tu tapes ensuite
Calendrier


En ce qui me concerne, je me suis servi d'un de ces calendriers que j'ai
modifié pour me mettre les dates en ligne ou en colonne sur un intervalle
défini.

Cordialement.




"Nadia" a écrit dans le message de news:
#
Hello a tous,

Je voudrais savoir si une macro existe pour masquer une ou plusieurs
colonnes
selon qu'elle ne contient pas de données dans une cellule spécifique (AG
7).


J'airais aimé, sur un tableau avec des dates pouvoir masquer
la colonne qui ne comporte pas de 31e jour selon les mois, ainsi que
les 29;30;31 de février (si février n'est pas bissextile).

A titre indicatif :
Les dates dans les colonnes de mon tableau, ne sont pas inscrite une
à une, mais selon une formule qui me donne les dates journalières, selon
le

mois et l'année
inscrite dans une cellule du tableau.

Cela donne, selon les mois impaires, la cellule AG 7 est vide, car le
jour


du 31 ne s'y inscrit pas.

dans ces conditions, puisque cette cellule est vide (les mois impaires),
je

voudrais qu'elle se
masque toute seule.

Qui aurait la bonté de me venir en aide?

Salutations

Nadia








Avatar
E KERGRESSE
Salut Nadia,



Soit dans ta feuille en B5 : l'année, en B6 : le mois (Janvier, Février,
etc...)

Ces cellules peuvent être remplies à partir d'une liste de validation pour
ne pas avoir d'erreur de saisie. C'est ce que j'ai fait dans mon tableau.




Puis tu mets dans le module de la feuille où tu réalises ta saisie, la
procédure suivante :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Exemple pris dans le classeur à télécharger Events.xls sur Excelabo.net ou
sur un autre site, je ne me rappelle plus
' sur quel site j'ai téléchargé ce classeur.

Dim CellChange As Range

Set CellChange = Range("B5:B6")

If Not Application.Intersect(CellChange, Range(Target.Address)) _
Is Nothing Then

Call TesterLeMois
CellChange.Select

End If
End Sub

' NB A chaque changement d'année ou de mois, la macro TesterLeMois est
lancée.



' Puis, mettre dans un module standard


Function IsBissextile(An)
' De Frédéric Sigonneau
' Plage de validité des dates en VBA
If An < 100 Or An > 9999 Then
IsBissextile = CVErr(xlErrNum)
Exit Function
End If

IsBissextile = (An Mod 4 = 0) Or (An Mod 4 = 0 And (Not An Mod 100 = 0))

End Function


Sub TesterLeMois()

Dim MoisEnCours As String
Dim I As Integer
Dim NombreDeJours As Integer
Dim An As Long

An = Range("B5").Value

Range("B6").Select
MoisEnCours = Range("B6").Value

Select Case MoisEnCours

Case "Janvier", "Mars", "Mai", "Juillet", "Août", "Octobre", "Décembre"
NombreDeJours = 31
Case "Février"
If IsBissextile(An) = True Then
NombreDeJours = 29
Else
NombreDeJours = 28
End If

Case Else
NombreDeJours = 30
End Select

Range(Cells(7, 3), Cells(7, 33)).Select
Selection.ClearContents

For I = 1 To NombreDeJours

ActiveSheet.Range("C7").Offset(0, I - 1).Value = I

Next


End Sub


Avec ces procédures et fonction, il n'y a donc pas besoin de cacher les
colonnes.


Cordialement.





"Nadia" a écrit dans le message de news:
#
Cher Éric,

cela ne marche pas.

salutations

Nadia


"E KERGRESSE" a écrit dans le
message

de news:%
Salut Nadia,

Une réponse peut être celle-là

If Range("AG7").value = "" then

Columns(Range("AG7").Column).Hidden = True

End if

Pour ce qui est de masquer tes colonnes en fonction du nombre de jours
du


mois, il faudrait que tu expliques dans quel contexte tu es amenée à
générer

ces colonnes en trop. Il existe en effet dans Excelabo.net, un tas de
générateurs de calendriers qui t'affranchissent de ce problème.

http://www.excelabo.net/moteurs/recherche.php , tu tapes ensuite
Calendrier


En ce qui me concerne, je me suis servi d'un de ces calendriers que j'ai
modifié pour me mettre les dates en ligne ou en colonne sur un
intervalle


défini.

Cordialement.




"Nadia" a écrit dans le message de news:
#
Hello a tous,

Je voudrais savoir si une macro existe pour masquer une ou plusieurs
colonnes
selon qu'elle ne contient pas de données dans une cellule spécifique
(AG



7).

J'airais aimé, sur un tableau avec des dates pouvoir masquer
la colonne qui ne comporte pas de 31e jour selon les mois, ainsi que
les 29;30;31 de février (si février n'est pas bissextile).

A titre indicatif :
Les dates dans les colonnes de mon tableau, ne sont pas inscrite une
à une, mais selon une formule qui me donne les dates journalières,
selon



le
mois et l'année
inscrite dans une cellule du tableau.

Cela donne, selon les mois impaires, la cellule AG 7 est vide, car le
jour


du 31 ne s'y inscrit pas.

dans ces conditions, puisque cette cellule est vide (les mois
impaires),



je
voudrais qu'elle se
masque toute seule.

Qui aurait la bonté de me venir en aide?

Salutations

Nadia












Avatar
Nadia
Hello Eric,

Je vais voir si je comprends quelque chose à ces
phrases.... (milles excuses, mais j'ai encore beaucoup de peines avec les
codes
et leurs compréhensions)

salutations

Nadia

P.S.

Je t'ai envoyé un petit mail.


"E KERGRESSE" a écrit dans le message
de news:
Salut Nadia,



Soit dans ta feuille en B5 : l'année, en B6 : le mois (Janvier, Février,
etc...)

Ces cellules peuvent être remplies à partir d'une liste de validation pour
ne pas avoir d'erreur de saisie. C'est ce que j'ai fait dans mon tableau.




Puis tu mets dans le module de la feuille où tu réalises ta saisie, la
procédure suivante :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Exemple pris dans le classeur à télécharger Events.xls sur Excelabo.net
ou

sur un autre site, je ne me rappelle plus
' sur quel site j'ai téléchargé ce classeur.

Dim CellChange As Range

Set CellChange = Range("B5:B6")

If Not Application.Intersect(CellChange, Range(Target.Address)) _
Is Nothing Then

Call TesterLeMois
CellChange.Select

End If
End Sub

' NB A chaque changement d'année ou de mois, la macro TesterLeMois est
lancée.



' Puis, mettre dans un module standard


Function IsBissextile(An)
' De Frédéric Sigonneau
' Plage de validité des dates en VBA
If An < 100 Or An > 9999 Then
IsBissextile = CVErr(xlErrNum)
Exit Function
End If

IsBissextile = (An Mod 4 = 0) Or (An Mod 4 = 0 And (Not An Mod 100 0))

End Function


Sub TesterLeMois()

Dim MoisEnCours As String
Dim I As Integer
Dim NombreDeJours As Integer
Dim An As Long

An = Range("B5").Value

Range("B6").Select
MoisEnCours = Range("B6").Value

Select Case MoisEnCours

Case "Janvier", "Mars", "Mai", "Juillet", "Août", "Octobre",
"Décembre"

NombreDeJours = 31
Case "Février"
If IsBissextile(An) = True Then
NombreDeJours = 29
Else
NombreDeJours = 28
End If

Case Else
NombreDeJours = 30
End Select

Range(Cells(7, 3), Cells(7, 33)).Select
Selection.ClearContents

For I = 1 To NombreDeJours

ActiveSheet.Range("C7").Offset(0, I - 1).Value = I

Next


End Sub


Avec ces procédures et fonction, il n'y a donc pas besoin de cacher les
colonnes.


Cordialement.





"Nadia" a écrit dans le message de news:
#
Cher Éric,

cela ne marche pas.

salutations

Nadia


"E KERGRESSE" a écrit dans le
message

de news:%
Salut Nadia,

Une réponse peut être celle-là

If Range("AG7").value = "" then

Columns(Range("AG7").Column).Hidden = True

End if

Pour ce qui est de masquer tes colonnes en fonction du nombre de jours
du


mois, il faudrait que tu expliques dans quel contexte tu es amenée à
générer

ces colonnes en trop. Il existe en effet dans Excelabo.net, un tas de
générateurs de calendriers qui t'affranchissent de ce problème.

http://www.excelabo.net/moteurs/recherche.php , tu tapes ensuite
Calendrier


En ce qui me concerne, je me suis servi d'un de ces calendriers que
j'ai



modifié pour me mettre les dates en ligne ou en colonne sur un
intervalle


défini.

Cordialement.




"Nadia" a écrit dans le message de news:
#
Hello a tous,

Je voudrais savoir si une macro existe pour masquer une ou plusieurs
colonnes
selon qu'elle ne contient pas de données dans une cellule spécifique
(AG



7).

J'airais aimé, sur un tableau avec des dates pouvoir masquer
la colonne qui ne comporte pas de 31e jour selon les mois, ainsi que
les 29;30;31 de février (si février n'est pas bissextile).

A titre indicatif :
Les dates dans les colonnes de mon tableau, ne sont pas inscrite une
à une, mais selon une formule qui me donne les dates journalières,
selon



le
mois et l'année
inscrite dans une cellule du tableau.

Cela donne, selon les mois impaires, la cellule AG 7 est vide, car
le




jour
du 31 ne s'y inscrit pas.

dans ces conditions, puisque cette cellule est vide (les mois
impaires),



je
voudrais qu'elle se
masque toute seule.

Qui aurait la bonté de me venir en aide?

Salutations

Nadia