afficher période sur calendrier

alex67800

XLDnaute Impliqué
Bonjour,
je suis nouveau sur votre forum, et je dois dire qu'il m'a déjà été bien utile.
Je remerci toutes les personnes qui contribuent à nous améliorer.

Voilà mon problème, j'ai crée une feuiile de pointage de mon personnel, sous forme de calendrier (et oui encore un)
Je voudrais pouvoir selectionner une date de début et de fin à afficher, et masquer toutes les autres colonnes, pour faciliter la saisie.
Je vous joint mon fichier pour voir la mise en forme du tableau.

Je m'explique:
C14 = Date début (période)
C15 = Date Fin (période)
Colnne F:GE = Date (calendrier)
Donc afficher que les colonne F:GE comprise entre les périodes C14 et C15
Si je change les valeurs C14 et/ou C15 le masquage change avec.

J'ai parcourut le forum, il y a bien différentes propositions mais elles ne fonctionnent qu'avec une condition, et je n'arrive pas à l'adapter.

Merci d'avance pour votre aide!
 
Dernière édition:

Omicron

XLDnaute Junior
Re : afficher période sur calendrier

Bonjour Alex,

En pièce jointe, ton exemple adapté pour faire ce que tu demandes.

Principe :
Programmation de l'évènement WorkSheet_Change de la Feuille "Premier semestre"
Dès que tu changes Date Début Ou Date Fin cette procédure est activée
Toutes les colonnes de la feuille ne répondant pas au critère "Date" sont masquées.

NB:
Les performances peuvent être largement améliorées, mais la programmation sera légèrement plus complexe.

Cordialement ...
 

Pièces jointes

  • afficher période sur calendrier.Solution.zip
    46.3 KB · Affichages: 74

Omicron

XLDnaute Junior
Re : afficher période sur calendrier

Re bonjour Alex,

Si "Améliorer la fluidité" consiste à ne pas avoir de clignotement de l'écran pendant que le travail se déroule d'affichage et/ou de masquage se fait, ajouter les deux instructions suivantes dans la procédure : Worksheet_Change

----------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cel As Range

If Not Application.Intersect(Target, Union(Range("Date_Début"), Range("Date_Fin"))) _
Is Nothing Then

Application.ScreenUpdating = False '<==== Ajouter

'Réaffichage de toute les colonnes
Range("Dates").EntireColumn.Hidden = False

'Masquage de toutes les colonnes dont la date ne vérifie pas les limites
For Each Cel In Range("Dates").Cells
If Cel < CDate(Range("Date_Début")) Or Cel > CDate(Range("Date_Fin")) Then _
Cel.EntireColumn.Hidden = True
Next Cel

Application.ScreenUpdating = True '<==== Ajouter

End If

End Sub
----------------------------------------------------------------------------------------

Ps : Je n'ai pas pu renvoyer le fichier modifié car trop gros (Zip 49k). Sorry ...

Bonne soirée.
 

alex67800

XLDnaute Impliqué
Re : afficher période sur calendrier

J'ai mis une liste en C16 filtrant les noms, mais une fois utilisé sur excel97 (au boulot)elle n'apparait plus.
Est-il possible sur le même principe que pour les dates de masquer/afficher en fonction d'un nom les lignes ne remplissant pas les condiotions, ou au choix apparaitre toutes les lignes.
De même que excel97 ne supporte pas le calendrier automatique que j"ai mis, j'ai ce message "Impossible de charger l'objet car il n'est pas disponible sur cette machine".
Que faire?
 
Dernière édition:

alex67800

XLDnaute Impliqué
Re : afficher période sur calendrier

Bonoir Omicron,
Heureux de te revoir.
Je t'ai mis un fichier en exemple.
Pour ce qui est du calendrier j'ai utilisé le calendrier de mydearfriend il est impeccable.
Pour le reste je t'ai mis des commentaire en feuill1 et 1er semestre (j'ai du supprimer un onglet pour alléger mon zip)
Merci d'avance pour ton aide si précieuse.
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : afficher période sur calendrier

Bonsoir, regarde le fichier joint
rajouté Option Compare Text pour ignorer majuscule/minuscule,
Dim plg As Range et en fin de code :

Code:
If Target.Address = "$C$13" Then
Set plg = Range(Cells(17, 3), Cells(75, 3))
If Target = "" Then plg.EntireRow.Hidden = False: Exit Sub
    For Each Cel In plg
        Cel.EntireRow.Hidden = IIf(Cel = Target, False, True)
    Next Cel
End If
 

Pièces jointes

  • afficher période sur calendrierv2.zip
    41.5 KB · Affichages: 56

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 257
Membres
102 840
dernier inscrit
blaise09