Masquer colonnes des samedi et dimanche

Chrisjo56

XLDnaute Nouveau
Bonsoir,

Voici ce qui m'amène. Je suis en train de créer un fichier Excel qui comptabilise des données sur une année. J'ai fait un onglet par mois et un dernier de synthèse qui additionne les totaux de chaque mois. Jusque là tout va bien ;-)

J'aimerais améliorer ce fichier en enlevant les week-end. J'ai commencé par masquer les colonnes correspondantes aux week-end mais il me semblerait plus judicieux de créer une macro qui le fasse pour moi et c'est là que ça coince car les macros et moi... je n'ai pratiquement aucune notion de VBA et j'ai fouiné sur le net pour trouver une macro. Problème, celle-ci fonctionne mais seulement si les dates sont sur des lignes. Or, dans mon fichier, elles sont en colonne.

Si l'un d'entre vous peut me venir en aide, je lui en serais très reconnaissant.

D'avance merci.
PS : petite précision : je suis sous Excel 2003.
 

alexga78

XLDnaute Occasionnel
Re : Masquer colonnes des samedi et dimanche

bonsoir Chrisjo56, le forum
tu trouveras ici des nombreuses personnes pour t'aider mais sans fichier avec au moins quelques données comment veux tu que l'on puisse d'aider ?
à te lire avec un fichier exemple
 

ledzepfred

XLDnaute Impliqué
Re : Masquer colonnes des samedi et dimanche

Chrisjo, Alexga, bonsoir,

on peut écrire une macro qui masquerait dans chacun de tes onglets les colonnes we mais il faut deux impératifs à mon sens :
-1) que la ligne portant les entêtes de colonnes soient la même dans tous tes onglets
-2) que les dates qui figurent dans ces entêtes mentionnent le jour correspondant à la date ainsi on pourra s'appuyer sur sam et dim pour masquer les colonnes we

Un fichier serait le bienvenu.

A+
 

alexga78

XLDnaute Occasionnel
Re : Masquer colonnes des samedi et dimanche

re Chrisjo56,
bonsoir ledzepfred,

un petit essai en supposant que le nom des jours soit présent dans la première ligne de chaque onglet,
peux pas faire mieux sans un petit fichier


Code:
Option Explicit
Dim ws As Worksheet, cel As Range, va$
Sub masque_we()
For Each ws In ActiveWorkbook.Worksheets
    With ws
        For Each cel In .Range(.Cells(1, 1), .Cells(1, 256).End(xlToLeft))
            If cel = "SAMEDI" Or cel = "DIMANCHE" Then
                If Len(cel.Address) = 4 Then
                va = Left(Replace(cel.Address, "$", ""), 1)
                Else
                va = Left(Replace(cel.Address, "$", ""), 2)
                End If
            .Columns(va).Hidden = True
            End If
        Next cel
    End With
Next ws
va = ""
End Sub
Sub affiche_we()
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
Columns.Hidden = False
Next ws
End Sub

Bonne soirée
 
Dernière édition:

Chrisjo56

XLDnaute Nouveau
Re : Masquer colonnes des samedi et dimanche

Bonjour et merci pour vos réponses. Effectivement, avec un fichier cela sera plus parlant, Je vous joint donc un des onglets du fichier en question. J'ai eu plusieurs pistes qui fonctionnent sauf une petite chose : mes dates sont sur des cellules fusionnées et les macros que j'ai essayées ne masquent que la 1ère des 3 colonnes du WE.
J'ai donc, en attendant mieux (et si cela est possible) fait la manip manuellement.

Je vous remercie une nouvelle fois et vous souhaite un bon dimanche ... enfin ce qu'il en reste..

@miités
 

Pièces jointes

  • Classeur2.xls
    24.5 KB · Affichages: 135
  • Classeur2.xls
    24.5 KB · Affichages: 142
  • Classeur2.xls
    24.5 KB · Affichages: 137

ledzepfred

XLDnaute Impliqué
Re : Masquer colonnes des samedi et dimanche

bonsoir chrisjo, alexga,

je suis parti du code d'alexga et l'ai adapté à la structure de ton fichier :

-j'identifie le jour de la semaine grâce à la fonction JOURSEM (en vba : weekday) qui renvoie le n° de jour de la date soit 7 pour samedi et 1 pour dimanche, si cel est vide (comme c'est le cas pour tes cellules fusionnées), la fonction weekday renvoie le n° du jour (aujourd'hui... en l'occurence dimanche soit 1) d'où le si sur les valeurs vides de cel (je sais pas trop si je suis clair là!!)

Code:
Option Explicit
Dim ws As Worksheet, cel As Range
Sub masque_we()
On Error Resume Next
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
    With ws
        For Each cel In .Range(.Cells(1, 3), .Cells(1, 256).End(xlToLeft))
            If IsEmpty(cel) = False Then
                If Weekday(cel) = 7 Or Weekday(cel) = 1 Then .Activate: .Range(Cells(1, cel.Column), Cells(1, cel.Column + 2)).EntireColumn.Hidden = True
            End If
        Next cel
    End With
Next ws
End Sub
Sub affiche_we()
On Error Resume Next
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
Columns.Hidden = False
Next ws
End Sub

a+

EDIT: bonsoir alexga, on a eu la même idée pour weekday:)
 

Pièces jointes

  • Classeur2(1).xls
    37.5 KB · Affichages: 126
  • Classeur2(1).xls
    37.5 KB · Affichages: 131
  • Classeur2(1).xls
    37.5 KB · Affichages: 135
Dernière édition:

alexga78

XLDnaute Occasionnel
Re : Masquer colonnes des samedi et dimanche

Bonsoir Chrisjo56, le forum,

Un essai pour ton fichier : c'est un peu de la bricole car en effet les cellules fusionnées posent problèmes.
Les experts de ce forum trouveront surement une solution plus élégante que moi...je suis encore un petit scarabée :)
Bonne soirée
 

Pièces jointes

  • Classeur2.zip
    13.9 KB · Affichages: 81
  • Classeur2.zip
    13.9 KB · Affichages: 78
  • Classeur2.zip
    13.9 KB · Affichages: 79
Dernière édition:

James007

XLDnaute Barbatruc
Re : Masquer colonnes des samedi et dimanche

Un petit conseil en passant :
Il faut supprimer toutes les cellules fusionnées et les remplacer par un centrage dans la sélection ...
Tu éviteras un nombre incalculable d'ennuis ... !!!

A+
 

Chrisjo56

XLDnaute Nouveau
Re : Masquer colonnes des samedi et dimanche

Ca y est !!

Un grand merci à vous, et particulièrement Ledzepfred (avec un avatar plutot "floydien" que "Zeppelien" :) et alexga dont les deux propositions fonctionnent à merveille. Je vais maintenant tenter de déchiffrer ces deux macros afin d'en apprendre un peu plus sur VBA.

James007, au risque de paraitre plus nul que je ne le suis (et encore !!:), peux-tu m'expliquer comment faire un centrage dans la sélection ? Jusqu'à ce jour, je n'ai jamais entendu parler de cette manip, c'est pourquoi j'utilise très régulièrement la fusion de cellules.

Encore merci à tous ceux qui ont pris la peine de me lire.

Bonne soirée
Chris
 

Chrisjo56

XLDnaute Nouveau
Re : Masquer colonnes des samedi et dimanche

Sous excel 2000 ...

Format Cellules Alignement Horizontal ... dernier choix ...

A+

Bonjour James007,

Effectivement, je ne connaissais pas cet alignement pas. Par contre, la macro initiale aura le même comportement, à savoir qu'elle ne masquera que la 1ère colonne, les 2 autres, qui ne contiennent pas de date, ne le seront pas. D'où retour aux macros proposées par Alexga et Ledzepfred.

Merci encore pour ta réponse et bonne journée.

Cordialement,
Chris
 

James007

XLDnaute Barbatruc
Re : Masquer colonnes des samedi et dimanche

Bonjour Chris jo56,

Ok ... je n'ai pas parlé de la macro ... effectivement...

C'était juste un conseil pour le futur : "jamais de cellules fusionnées" ...
car c'est le meilleur moyen de se créer ses futurs problèmes ..

A +
 

Trishia

XLDnaute Nouveau
Re : Masquer colonnes des samedi et dimanche

Bonsoir,

Sous Excel 2003, je souhaite masquer les colonnes correpondant aux samedi et dimanche.
J'ai repris la macro dans le fichier joint, mais ce message d'erreur apparait :
"Erreur d'exécution '13':
Incompatibilité de type"

Je souhaite effectuer cette macro sur une seule feuille.

Merci d'avance de votre aide.
 

Pièces jointes

  • Classeur_test.xls
    25 KB · Affichages: 56
  • Classeur_test.xls
    25 KB · Affichages: 74
  • Classeur_test.xls
    25 KB · Affichages: 61

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Masquer colonnes des samedi et dimanche

Bonjour Trishia, et bienvenue sur le forum

J'ai repris la macro dans le fichier joint, mais ce message d'erreur apparait :
"Erreur d'exécution '13':
Incompatibilité de type"

l'erreur est simplement due au fait que la cellule P6 ne contient pas une date
- vide la cellule P6

à+
Philippe

Remarque:
il eut été préférable d'ouvrir un nouveau fil de discussion au lieu de déterrer celui-ci
 

Discussions similaires

Réponses
8
Affichages
215

Statistiques des forums

Discussions
312 775
Messages
2 092 013
Membres
105 149
dernier inscrit
Joseri70