Calendrier et un semainier pour une meme cellule

Bonjour à tous,

J'aimerais bien avoir un peu d'aide de personnes maîtrisant Excel car j'ai beau chercher, je ne trouve pas, rien d'identique sur le net...

J'ai deux problèmes :

Un petit : une sélection d'une date avec une calendrier, qui ne s'affiche pas dans la cellule, plutôt simple avec LinkedCell, sauf que c'est un calendrier "flottant" qui se positionne sur plusieurs lignes.

Et un plus gros : j'ai une cellule commune qui est aussi bien gérée par un CALENDRIER qu'un "SEMAINIER", or lorsque l'on sélectionne une date du calendrier, il remplace la formule qui gère le "SEMAINIER" par la date sélectionnée.

Vous trouverez ci-joint le fichier avec plus d'explications.

Si vous pouviez m'aider ça serait vraiment très sympa !

Merci à tous.

Cordialement.

Bonjour,

Pour le premier pb, en modifiant la valeur de dtpicker par sélection, tu ne cliques pas, donc la date ne s'inscrit pas.

Il te faut doubler l'évènement Click avec la même commande pour l'évènement Change.

Sans supprimer Click car pour entrer la date affichée sans la modifier il faudra cliquer.

Pour le second, je regarde... pas de code encore il me semble.

Cordialement.

Bonjour MFerrand,

Merci de ta réponse si rapide ! Excuses-moi, j'ai un peu de mal à te suivre, javais pu vérifier qu'en effet, la date sélectionnée est prise en compte avec un double-clic, mais lorsque l'on utilise un calendrier simple, il suffit de cliquer sur la date pour que la cellule prenne automatiquement la valeur, bien-sûr je suppose que tu le savais déjà !

En fait, je souhaiter reproduire le même fonctionnement avec ce calendrier "flottant", mais peut-être n'est-ce pas possible ? Je ne sais pas...

J'ai oublié de préciser (mais peut-être l'as-tu vu) que le calendrier fonctionne avec du VBA, je pense qu'il me manque une ligne de commande ?!

Encore une fois merci beaucoup pour ton aide (je me sent moins seul).

Cordialement.


Re:

J'ai oublié, pour le deuxième problème, je pense qu'il faut "simplement" (car c'est plus facile à dire qu'à faire) que la cellule commune garde la dernière valeur sélectionnée soit par le calendrier, soit par le semainier.

Pas eu le temps de voir ton second fichier (donc si différent du premier...)

Ce qu'on constate, c'est que visiblement la sélection d'une date ne déclenche pas l'évènement Click, donc :

Private Sub DTPicker1_Change()
    ActiveCell.Value = DTPicker1.Value
End Sub

Ceci y pallie et inscrit la date.

Pour DTPicker2, ton système est mixte et tu veux il me semble qu'il réagisse aussi bien aux actions sur le dtpicker que sur les + et -.

Il fallait donc que les 2 choix puissent se brancher sur la même procédure de modification.

Comme j'avais commencé par le dtpicker, c'est DTPicker2 qui fournira la procédure :

Private Sub DTPicker2_Change()
    Dim d, d0, d1, s%
    d = DTPicker2.Value
    d0 = DateSerial(Year(d), 1, 3)
    d0 = d0 - Weekday(d0) + 2
    If d0 > d Then
        d0 = DateSerial(Year(d) - 1, 1, 3)
        d0 = d0 - Weekday(d0) + 2
    Else
        d1 = DateSerial(Year(d) + 1, 1, 3)
        d1 = d0 - Weekday(d0) + 2
        If d >= d1 Then d0 = d1
    End If
    d1 = d - (Weekday(d) + 5) Mod 7
    s = Int((d - d0) / 7) + 1
    Range("E12") = s
    Range("F12") = d1
End Sub

J'aurais pu faire moins long mais cela m'obligeait à réfléchir plus Là le calcul de la semaine est décomposé... La procédure calcule le numéro de semaine correspondant à la date sélectionnée, et la date du lundi de ladite semaine.

Elle affecte le numéro à E12 et la date du lundi à F12. F12+6 donnera la date du dimanche en G12.

Evidemment, plus de cellule liée au dtpicker !

Les 2 modif. principales par rapport à ton système antérieur, c'est qu'on n'aura plus de semaine 0, -1, -2 ... ou 54, 55 ... On passera de 1 à 53 ou 52 en reculant et de 52 ou 53 à 1 en avançant. Et la date en F12 sera toujours celle du lundi et non celle sélectionnée qui peut être autre.

Pour adapter les procédures + et -, je les ai transféré dans le module de la feuille (de façon qu'elles puissent forcer le lancement de la procédure précédente qui ne se lance pas toute seule au changement de valeur, contrairement à ce que je pensais).

Et modifiées :

Sub SemainePlus1()
    Dim d
    d = Range("F12").Value
    ActiveSheet.DTPicker2.Value = d + 7
    DTPicker2_Change
End Sub

Sub SemaineMoins1()
    Dim d
    d = Range("F12").Value
    ActiveSheet.DTPicker2.Value = d - 7
    DTPicker2_Change
End Sub

Ce n'est plus à partir de ces procédure qu'on modifie E12. On prend la date en F12, on ajoute ou retranche 7 pour tomber sur le lundi précédent ou suivant, date qu'on affecte au dtpicker. Puis on lance sa procédure Change qui fait le reste.

Cordialement.

Re:

Whouaaa !!! Je comprends maintenant pourquoi il y a tant d'étoiles sur ton compte ! Mille mercis ! C'est trop top ! Quand je pense que mes collègues de travail disent que je suis un crack sur Excel, quand je vois cela, je pense plutôt être du côté des rigolos !

Vraiment merci beaucoup, je suis trop content !

Pourrais-je abuser encore un peu ? Mais ce n'est pas pressant, on est quand même dimanche !

Là je pense que cela doit-être plus "hard"...

J'ai une plage de réservations avec des dates, horaires et lieux, j'aimerai savoir s'il est possible d'avoir un message d'avertissement avec une surbrillance des deux zones concernées lorsqu'une réservation chevauche l'autre.

Ce que je voudrais c'est faire ressortir qu'il n'est pas possible de faire une réservation qui est déjà occupée. (il y a deux lieux différents),

Tu trouveras ci-joint le fichier exemple.

Mais si ce n'est pas possible, ce n'est pas grave, tu m'as déjà tellement aidé.

Encore merci.

Une MFC...

Mais problème, seules des heures apparaissent, ce qui signifierait que le tableau est réservé à une journée, mais 500 lignes !

Qu'en est-il ?

Bonjour MFerrand,

Heuuuu, oui c'est bien cela ! Est-ce que cela pose problème ? Car c'est pour gérer un agenda sur 1 an. Mais peut-être que ma procédure n'est pas bonne et que je dois la revoir ?

Cordialement.

Si on se base sur l'heure, elle se répète tous les jours, il va y avoir confusions entre les jours si on ne distingue pas les dates.

Comment tu procèdes aux inscriptions ?

Je saisie en premier le lieu, puis la date, puis l'heure de début et enfin l'heure de fin, donc finalement l'application doit comparer ces données et vérifier si celles-ci sont possible, si l'heure de début de la réservation suivante va se situer entre le créneau horaire de celle déjà réservée.

Exemple d'une réservation déjà existante :

Lieu : Salle de réunion

Date : 29/02/2016

Heure début : 14h00

Heure de fin : 17h00

Réservation suivante :

Lieu : Salle de réunion (contrôle : OK

Date : 29/02/2016 : (contrôle : OK)

Heure début : 14h30 (message) !!! Attention plage horaire déjà réservée !!!

Car le lieu, la date sont bons, mais la plage horaire est déjà occupée.

Je vais essayer de te faire un croquis....

OK, j'attends ton ajustement de modèle...

Bonjour MFerrand,

Tu trouveras ci-joint le fichier discuté.

Pour la petite histoire, il est en parti déjà partiellement fait, car j'avais déjà demandé de l'aide sur ce forum en novembre 2013, et c'est Leakim qui m'avait aidé (que je remercie et j'en profite pour lui passer le bonjour)

Je lui avais indiqué que je le partagerai sur ce forum, mais comme il marche sur 3 pattes et que nous n'avons pas réussi à régler tous les problèmes, j'avais laissé tombé le projet.

Pensant qu'il était dommage de le laisser alors qu'il était à 90 % terminé. Je l'ai donc fait beaucoup évolué, mais il reste toujours ces deux soucis pour qu'il soit enfin opérationnel, c'est à ce seul moment que je souhaiterai le partager.

Cela serait vraiment bien que l'on réussisse car honnêtement et sans vantardise, je pense qu'il est pas mal du tout...

Merci.

Désolé pour le doublon de post, j'ai eu un plantage de Firefox.

Pas de problème !

Dans ce cas là, tu édites et supprimes le doublon.

La formule ci-dessous a l'air de répondre aux conditions :

=SOMMEPROD(($B$4:$B$500=B4)*($D$4:$D$500>C4)*($C$4:$C$500<D4)*($G$4:$G$500=G4))>1

Par contre, bien que la plage d'application spécifiée soit bien : B4:I500, elle ne l'applique qu'à la colonne B !?

Sauf à penser que c'est encore un de ces satanés tableau Excel avec qui décidément je ne fais pas bon ménage qui me joue des tours.

Je vais essayer d'élucider ça plus tard. Mais regarde de ton côté.

Salur Oscar57 et Mferrant,

Je me suis remis un peu sur le forum et je constate que ce fil est en suspend...

Je me permet de dire que cela ressemble à ce que nous avions travaillé et qui à pris pour moi la forme de https://www.excel-pratique.com/fr/telechargements/plannings/planning-de-reservation-no108.php

J'ai rapidement ouvert le dernier fichier envoyé sans reprendre tous vos échanges, mais j'ai eu le même probleme de formule parfois. Cela vient du fait qu'il faut forcer l'arrondi des heures, car sinon il y peut y avoir de nombreux chiffres après la virgule (13 max avec excel) et cela fait des erreurs dans les formules.

Pour la formule

=SOMMEPROD(($B$4:$B$500=B4)*($D$4:$D$500>C4)*($C$4:$C$500<D4)*($G$4:$G$500=G4))>1

Si tu veux qu'elle s'applique à la plage B4:I500

essayes en figeant les références à tester

=SOMMEPROD(($B$4:$B$500=$B4)*($D$4:$D$500>$C4)*($C$4:$C$500<$D4)*($G$4:$G$500=$G4))>1

Voilà c'est juste pour reprendre contact et poursuivre la progression du fil.

Cordialement,

Leakim

Bonjour Leakim,

Tu me prends au dépourvu sur ce fil, car je ne me souviens plus exactement, ma dernière intervention date d'un bon mois (depuis de nombreux fichiers sont passés) et je n'en avais pas une connaissance approfondie, n'étant intervenu que marginalement pour tenter de régler 2 dysfonctionnements.

Le premier a été réglé, je pense, le second peut-être toujours pas, mais pas eu de retour depuis. en revoyant rapidement la discussion il s'agissait d'une MFC : la formule fournissait apparemment le bon résultat puisque la MFC s'appliquait bien sur la colonne B, le problème était qu'elle aurait dû s'appliquer à toute la ligne...

Mais peut-être as-tu raison ! Et qu'il s'agit d'une question de références absolues ou relatives qui provoque le phénomène...

On va essayer de vérifier ça.

Bonne journée à toi.


Ton retour est tout à fait opportun ! C'était effectivement ça ! L'évaluation se faisait correctement pour la première colonne, mais ne "glissait" pas comme il fallait pour les autres ! Un problème bien réglé, donc !

Expliquant assez souvent le fonctionnement des MFC et comment construire une formule conditionnelle... j'aurais dû y penser... mébon !

Rechercher des sujets similaires à "calendrier semainier meme"