Masquer weeekend sur Excel [Résolu]

Signaler
Messages postés
2
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
4 septembre 2010
-
Messages postés
2
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
4 septembre 2010
-
Bonjour,

Voila, je suis une débutante avec Excel et j’essai de réaliser un planning pour la gestion de congé de salariés.
Mon problème est que j’essai de masquer les weekends et que je n’y arrive pas.
Pour afficher les jours de la semaine j’ai procédé de la manière suivante :
J’ai récupéré les dates situées dans la ligne 4 et j’ai copié cette formule sur toute la longueur de mon tableau (la ligne 5). Puis, pour afficher le jour de la semaine, j’ai sélectionné cette seconde ligne puis menuFormat, Cellules, onglet Nombres puis Dates et la catégorie personnalisée. Et dans la zone Type, j’ai tapé « jjj » pour obtenir l'affichage abrégé des jours de la semaine.

Puis j’ai créé un formulaire avec le bouton masquer weekend dont le code est :
Private Sub btnmasquer_Click()
    Dim d As Integer
    Dim F As Worksheet
    
    Set F = Application.ActiveWorkbook.Worksheets(1)
    For d = 2 To 254
        If F.Cells(d, 5).Value = "sam" Then
        F.Cells(d, 5).EntireColumn.Hidden = True
        End If
    Next
End Sub
 


ici je n'ai essayé de masquer que samedi en premier lieu (car dans une autre feuille concernant un autre pays le weekend c'est vendredi et samedi et non dim et sam ^^)

voila .. est ce que quelqu'un pourrai m'aider SVP?? (et merci !)

Mouna.

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Par acquit de conscience, j'ai tester le code.
Il y a un problème supplémentaire :
Sur ta ligne 5, tu as recopié la date de la ligne 4 puis tu lui a donné un format "jjj".
La propriété .Value te renverra la date, pas le format.
Un format ne sert qu'à l'affichage, la donnée reste intègre.
Il faut donc tester .Text et pas .Value

.Value renvoie la date, exemple 01/09/2010
.Value2 renvoie la date au format numérique (Double) où la partie entière donne le nombre de jours écoulés depuis 30/12/1899 et la partie décimale, le quantième d'heure (0= 0h00, 0.5:12h00, 1~23h59) --> Voir l'aide, chapitre "Date, type de données"
(Ce format peut-être pratique pour faire des calculs)
.Text renvoie le contenu de ta cellule, tel qu'elle est affichée

Dans le futur, apprends à trouver toi même ce genre de bug, avec le débogage :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 pour avancer d'une ligne de code
- F5 pour continuer normalement

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Tu n'as simplement pas fait attention au paramétrage de Cells :
La première valeur correspond à la ligne (RowIndex) et la seconde, à la colonne (ColumnIndex)
Tes données sont rangées en ligne, donc c'est la colonne qui doit varier, pas la ligne.
F.Cells(5, d)
devrait mieux fonctionner

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
2
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
4 septembre 2010

Merci Jack ! Ça marche super bien maintenant, tu m’as sauvé la vie
C'est vrai t'as raison j'aurais du trouver ce bug toute seule (pour le paramétrage de Cells je l'avais corrigé hier )

Anyways, merci beaucoup aussi pour les petites astuces j'étais pas au courant XD.

Mouna.