Masquage de lignes via cases à cocher

Choops

XLDnaute Occasionnel
Bonjour à tous,

comment faire en sorte que lorsque l’on désélectionne une case d'option d'une colonne, la ligne correspondante soit masquée dans toutes les feuilles précédentes càd de sem1 à sem6 ?

C’est vraiment un numéro de ligne que je voudrais pouvoir masquer et non une ligne parce qu’il y a écrit telle chose dans telle cellule. L’intérêt est que si je rajoute des nouvelles tâche en cours d’année, ça ne sera pas trop compliqué de mettre le code à jour.

Merci d’avance!
 
Dernière édition:

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Excellent Bhbh, je ne sais pas si tu habites près de Montréal, mais si oui, je te paierais un coup bien volontiers! En tout cas j’ai pas l’air fin quand je vois la facilité avec laquelle tu as l’air de manipuler le vba! Il serait temps pour moi de plonger un peu le nez dedans.
Pour continuer à t’embêter, j’ai une question relative aux formules d’Excel :

Comment se fait-il que ces 2 formules fonctionnent parfaitement :
{=MOYENNE(sem1:sem4!D23:J23))} (moyenne pour les mêmes cellules d’un groupe de feuilles)
et
{=MOYENNE(SI(sem1!D85:J85="janvier";sem1!D23:J23))} (moyenne conditionnelle pour une seule feuille)

alors que celle-ci me donne #REF en guise de résultat:
{=MOYENNE(SI(sem1:sem4!D85:J85="janvier";sem1:sem4!D23:J23))} (moyenne conditionnelle pour les mêmes cellules d’un groupe de feuilles)

Merci d’avance!
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Re-,
je crois qu'il y aura un bug, je te conseille cette ligne supplémentaire :


Code:
Case Is = x 
Sheets(i).Visible = xlVisible
Sheets(i).Tab.ColorIndex = 3

la semaine sélectionnée est la semaine européenne, pour plus d'info, regarde dans l'aide à "DatePart", pour les semaines "autres"

pour les formules, je laisse la place à d'autres "Formulistes" du site, ça sera bien meilleur. Je suis malgré tout le fil
 

Staple1600

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Bonsoir


Tu as mal regardé alors


DatePart, fonction


Renvoie une valeur de type Variant (Integer) contenant l'élément spécifié d'une date donnée.
Syntaxe
DatePart(interval, date[,firstdayofweek, firstweekofyear]])
La syntaxe de la fonction DatePart comprend les arguments nommés suivants :
Élément Description interval Expression de chaîne correspondant à l'intervalle de temps à renvoyer. date Valeur Variant (Date) à évaluer. firstdayofweek Facultatif. Constante précisant le premier jour de la semaine. Si aucune valeur n'est précisée, la valeur par défaut est dimanche. firstweekofyear Facultatif. Constante précisant la première semaine de l'année. Si aucune valeur n'est précisée, la première semaine est par défaut celle du 1er janvier.
Valeurs
L'argument interval peut prendre les valeurs suivantes :
Valeur Description yyyy Année q Trimestre m Mois y Jour de l'année d Jour w Jour de la semaine ww Semaine h Heure n Minute s Seconde
L'argument firstdayofweek peut prendre les valeurs suivantes :
Constante Valeur Description vbUseSystem 0 Utilise les paramètres de l'API NLS. vbSunday 1 Dimanche (valeur par défaut) vbMonday 2 Lundi vbTuesday 3 Mardi vbWednesday 4 Mercredi vbThursday 5 Jeudi vbFriday 6 Vendredi vbSaturday 7 Samedi
L'argument firtweekofyear peut prendre les valeurs suivantes :
Constante Valeur Description vbUseSystem 0 Utiliser l'argument NLS API. vbFirstJan1 1 Commencer par la semaine du 1er janvier (valeur par défaut). vbFirstFourDays 2 Commencer par la première semaine comportant au moins quatre jours dans l'année nouvelle. vbFirstFullWeek 3 Commencer par la première semaine complète de l'année.
Remarques
Utilisez la fonction DatePart pour évaluer une date et renvoyer un intervalle de temps spécifique. Par exemple, utilisez la fonction DatePart pour calculer le jour de la semaine ou l'heure en cours.
L'argument firstdayofweek a une incidence sur les calculs qui utilisent les symboles d'intervalles "w" et "ww".
Si date est un littéral date, l'année précisée devient un élément permanent de cette date. Toutefois, si date apparaît entre guillemets (" "), et si vous n'indiquez pas l'année, l'année en cours est insérée automatiquement chaque fois que l'expression date est évaluée. Vous pouvez ainsi écrire du code qui sera réutilisable au fil des années.
Note Pour date, si la valeur de la propriété Calendar est Grégorien, la date fournie par l'utilisateur doit être du même type. S'il s'agit d'un calendrier Hijri, la date doit prendre la valeur Hijri.
La partie de la date renvoyée est exprimée en unités périodiques du calendrier arabe actuel. Si, par exemple, le calendrier actuel est du type Hijri et que la partie de la date à renvoyer est l'année, la valeur obtenue correspond à une année Hijri.
 

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Re-,
oui, les "Billous" commencent la semaine le dimanche, les "sarkos&angela", le lundi...

l'aide de "DatePart" en pièce jointe
 

Pièces jointes

  • numero_semaine.zip
    1.3 KB · Affichages: 38
  • numero_semaine.zip
    1.3 KB · Affichages: 33
  • numero_semaine.zip
    1.3 KB · Affichages: 32

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Pffffft,
eh oui, plus le réflex de rafraichir!!!
à force de fouiller mon grenier, j'arrive à ne plus me mettre à jour...
La vieillure sans doute...
Le principal, c'est de savoir où on habite, non? :p
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Pourtant c'est bizarre, en gardant le code initial et en jouant avec l'horloge windows, tout paraît fonctionner normalement : pour Dimanche, il n'y pas de changements de feuilles mais le Lundi suivant, oui !
 
Dernière édition:

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Bonjour tout le monde !

J’aurais quelques questions concernant le code précédent (le code pour la coloration de la feuille de la semaine en cours et l’affichage des 4 dernières feuilles).

1/ J’ai détecté un bug quand on sauvegarde le fichier : j’ai l’impression que le code ne prend pas en compte les feuilles masquées. Si je lance le fichier aujourd’hui, j’ai bien les bons onglets qui se masquent, s’affichent et se colorent. Mais si je sauvegarde le fichier puis joue à retour vers le futur en changeant l’horloge système (cas d’une date ultérieure), mon nombre d’onglets se réduit de 1 par semaine. C’est pour ça que j’ai l’impression que les feuilles masquées ne sont pas prises en compte.

2/ J’aurais bien voulu aussi comprendre à quoi faisait exactement référence la variable y dans ce code ?

3/ J’ai aussi essayé de changer le nombre d’onglets qui apparaissent (comme 5 au lieu de 4) et j’ai changé tous les « 3 » du code (sauf celui du Tab.ColorIndex) par des 4, mais là tout devient masqué, sauf la feuille « contrôle ». Comment alors procéder pour modifier cette variable ?

4/ Si je change
x = DatePart("ww", Now, 2, 2) pour
x = DatePart("ww", Now, 2, 1)

afin de commencer par la semaine du 1er janvier, y aura-t-il une incidence sur le bon fonctionnement du code ? C’est pour cela que j’aimerais bien comprendre à quoi correspond le y pour savoir à quoi x est comparé.

Merci d’avance pour vos réponses !!!
 

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Bonjour Choops,

la variable y :

Code:
y = CDbl(Right(Sheets(i).Name, Len(Sheets(i).Name) - 3))

te donne le numéro de semaine de l'onglet visé. Comme tu les notes du type "sem5", "sem15", je prends donc les chiffres de droite avec le fonction Right, la fonction Len calculant le nombre de caractères dans le nom de l'onglet. Comme je n'ai pas besoin des 3 premiers (sem), je garde le ou les chiffres.
Pour l'erreur, rajoute celle ligne (en rouge) :

Code:
If Sheets(i).Name <> "Controle" Then
[COLOR="Red"]Sheets(i).Visible = True[/COLOR]

refais des essais, et reviens
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Bonjour bhbh, merci pour tes précisions !
Ça a l’air de bien fonctionner!

Juste pour confirmation, si je veux afficher une feuille de plus, il me suffit de faire:
Case Is >= (x - 4) et
Case Is < (x - 4) sans toucher à autre chose ?

Merci!
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Bonjour bhbh et tous les autres!

je suis bloqué par un petit problème idiot en adaptant le code du masquage de lignes de la première page du thread.

Par rapport au fichier stats_test3.xls , j'ai voulu changer l'affichage des X en faisant l'inverse du code: cad que un X signifie que la ligne est affichée. Ainsi quand on double clique sur un des labels de la 1ere colonne de la feuille controle, le X s'enlève. Pour faire cela, j'ai seulement inscrit manuellement des X dans la colonne L. Ensuite, pour le bouton "Remet", j'ai changé la valeur "" pour "X". J'ai aussi changé la position des cellules pour qu'elles correspondent à mon vrai fichier. Tout fonctionne très bien avec ce fichier test et je n'ai en théorie qu'à copier le code pour que ça marche.

Cependant des problèmes sont survenus avec mon véritable fichier xls qui contient un plus grand nombre de données ds la colonne "tâches". C'est le bouton "Remet" qui me pose problème. En effet, il ne me remet pas les X au bon endroit.

Je joins les 2 fichiers. Ils ont le même code mais font des choses différentes. SVP, dites moi ce que mes yeux ne voient pas! :)

Merci d'avance!
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Bonjour, remplace cette ligne :

Code:
Range(Cells(25, 35), Cells([A65000].End(xlUp).Row, 35)).Value = "X"

par celle-ci :

Code:
Range(Cells(25, 35), Cells([[COLOR="Red"]B[/COLOR]65000].End(xlUp).Row, 35)).Value = "X"
 

Discussions similaires

Réponses
5
Affichages
579
Réponses
2
Affichages
395
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 754
Messages
2 091 681
Membres
105 046
dernier inscrit
chadrack mbeke