Masquer weeekend sur Excel

Résolu
mounabouyahyaoui Messages postés 2 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 4 septembre 2010 - 3 sept. 2010 à 14:26
mounabouyahyaoui Messages postés 2 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 4 septembre 2010 - 4 sept. 2010 à 14:13
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 sept. 2010 à 10:37
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)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 sept. 2010 à 10:20
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)
0
mounabouyahyaoui Messages postés 2 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 4 septembre 2010
4 sept. 2010 à 14:13
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.
0
Rejoignez-nous