Sub Liste() 'mise a jour des données Feuil1 de puis Import
'declaration des plages en dates + heures de debut et de fin
Di
Dim minidate2, maxidate2
Dim minimaldate2, maximaldate2 As Date
With Feuil1
minidate2 = .Cells(.Rows.Count, "b").End(xlUp).Row
mm DébP As Date, FinP As Date
inimaldate2 = IIf(minidate2 > 4, Application.Min(.Range("b5:b" & minidate2)), "")
End With
Sub Liste() 'mise a jour des données Feuil1 de puis Import
'declaration des plages en dates + heures de debut et de fin
Dim DébP As Date, FinP As Date
Dim minidate2 As Long , maxidate2 As Long
Dim minimaldate2 As Date , maximaldate2 As Date
With Feuil1
minidate2 = .Cells(.Rows.Count, "b").End(xlUp).Row
minimaldate2 = IIf(minidate2 > 4, Application.Min(.Range("b5:b" & minidate2)), "")
End With
J'ai interprété la demande ainsi : 2 actionsJe ne comprends pas ce que tu veux faire avec ce classeur...
Dim MiB as date, MaC as date
Private Sub Worksheet_Activate()
MiB = Application.Min([B:B])
MaC = Application.Max([C:C])
[D3] = MiB
[B2] = Format(MiB, "dd/mm/yyyy")
[G2] = Format(MiB, "hh:mm")
[J3] = MaC
[I2] = Format(MaC, "dd/mm/yyyy")
[L2] = Format(MaC, "hh:mm")
End Sub
Private Sub Worksheet_Activate()
Application.EnableEvents = 0 'pour bloquer les évènements
MiB = Application.Min([B:B])
…
[L2] = Format(MaC, "hh:mm")
Application.EnableEvents = 1 'pour libérer les évènements
End Sub
Dim T as Boolean 'à rajouter obligatoirement tout en haut
Private Sub Worksheet_Change(ByVal R As Range)
If Not Intersect(R, [B2:G2,I2:L2]) Is Nothing Then
T = [B2] = "" Or [G2] = "" Or [I2] = "" Or [L2] = ""
If T Then Exit Sub '4 saisies non vides pour conclure
[D3] = [B2] & " " & Format([G2], "[$-409]h:mm AM/PM;@")
[J3] = [I2] & " " & Format([L2], "[$-409]h:mm AM/PM;@")
If CDate([D3]) > CDate([J3]) Then MsgBox "la date de début doit être inférieure à celle de la fin !", vbCritical, "Attention, erreur ..."
[B3].Select 'ou autre action de nettoyage
End If
End Sub
Je viens d'apprendre que le libre-arbitre serait un leurre (selon les neurosciences)Re..
Bon,
Je ne comprend pas ce que tu veux faire avec ce classeur...
Tu veux mettre une date et une heure (max et min) dans des cellules à l'activation de la feuille et en même temps modifier ces cellules.
Si c'est cela , je ne pense pas que cela soit une bonne méthode
Je ne sais pas si JM à compris la même chose.
Bon_soir
J'ai interprété la demande ainsi : 2 actions
Action 1 : mettre à jour la feuille à son activation après récupération des données. Là c'est simple avec les formats de date !
Action 2 : changements de saisie dans les cellules [B2], [G2], [I2] et [L2]. Cela se corse car la macro ci-dessus impacte l'évènementielle. Il faut se prémunir de cela en bloquant puis libérant les évènements.VB:Dim MiB as date, MaC as date Private Sub Worksheet_Activate() MiB = Application.Min([B:B]) MaC = Application.Max([C:C]) [D3] = MiB [B2] = Format(MiB, "dd/mm/yyyy") [G2] = Format(MiB, "hh:mm") [J3] = MaC [I2] = Format(MaC, "dd/mm/yyyy") [L2] = Format(MaC, "hh:mm") End Sub
Maintenant, il faut traiter les changementsVB:Private Sub Worksheet_Activate() Application.EnableEvents = 0 'pour bloquer les évènements MiB = Application.Min([B:B]) … [L2] = Format(MaC, "hh:mm") Application.EnableEvents = 1 'pour libérer les évènements End Sub
Je n'ai pas testé la validité des saisies donc à rajouter.VB:Dim T as Boolean 'à rajouter obligatoirement tout en haut Private Sub Worksheet_Change(ByVal R As Range) If Not Intersect(R, [B2:G2,I2:L2]) Is Nothing Then T = [B2] = "" Or [G2] = "" Or [I2] = "" Or [L2] = "" If T Then Exit Sub '4 saisies non vides pour conclure [D3] = [B2] & " " & Format([G2], "[$-409]h:mm AM/PM;@") [J3] = [I2] & " " & Format([L2], "[$-409]h:mm AM/PM;@") If CDate([D3]) > CDate([J3]) Then MsgBox "la date de début doit être inférieure à celle de la fin !", vbCritical, "Attention, erreur ..." [B3].Select 'ou autre action de nettoyage End If End Sub
Tout se passe dans la feuille 1* alors il n'y a plus de With… End With donc de point.
Si je suis en dehors de la plaque, il y a quand même une sacrée réduction pour la recherche des dates minimale et maximale et pour l'indication des cellules concernées.
* je vois trop souvent des macros dans des Modules Standards quand tout se passe dans le même onglet donc des codes alourdis !
Il me semble que c'est bien plus simple quand on se dit « Je travaille sur une seule feuille donc je saisis mes macros dans la fenêtre de codes de celle-ci !».
Bon_soir à toi aussiBon_soir
J'ai interprété la demande ainsi : 2 actions
Action 1 : mettre à jour la feuille à son activation après récupération des données. Là c'est simple avec les formats de date !
Action 2 : changements de saisie dans les cellules [B2], [G2], [I2] et [L2]. Cela se corse car la macro ci-dessus impacte l'évènementielle. Il faut se prémunir de cela en bloquant puis libérant les évènements.
* je vois trop souvent des macros dans des Modules Standards quand tout se passe dans le même onglet donc des codes alourdis !
Il me semble que c'est bien plus simple quand on se dit « Je travaille sur une seule feuille donc je saisis mes macros dans la fenêtre de codes de celle-ci !»
.
Re
@zayab
Pour infos:
C'est un choix esthétique les cellules fusionnées?
(Tu peux obtenir le même effet en utilisant Centrer sur plusieurs colonnes)
Re,
Je viens d'apprendre que le libre-arbitre serait un leurre (selon les neurosciences)
Du coup si je comprends ou pas la question, ce n'est pas de mon fait.
"29/5/18 7:00 AM 31/5/18 6:00 PM trouer"
Cependant, je me demande bien qui creuse des trous (et dans quoi) durant un si grand laps de temps
Au final, je crois bien que comme toi, Jacky67, je ne comprenne pas vraiment la demande du demandeur.
Mais celui-ci finira bien par trouver chaussure à son pied parmi toutes les réponses postées dans son fil.
Re..
Bon,
Je ne comprend pas ce que tu veux faire avec ce classeur...
Tu veux mettre une date et une heure (max et min) dans des cellules à l'activation de la feuille et en même temps modifier ces cellules.
Si c'est cela , je ne pense pas que cela soit une bonne méthode
Je ne sais pas si JM à compris la même chose.
En pj, le classeur avec seulement la demande initiale.